Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как засунуть делегат в Invoke? / 6 сообщений из 6, страница 1 из 1
05.03.2015, 15:46
    #38896185
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
Так дает ошибку, как можно протащить делегат?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 
public delegate string ConfirmTheClient(string foreignContext);
//...
public class MySvc
{
  public static string RetrieveContextData(string foreignContext)
  {
      // ...
  }
  public static void StartServer
  {
                       Type type = typeof(MyHub);
                        MethodInfo info = type.GetMethod(@"MyDelegate");
                        ConfirmTheClient cf = RetrieveContextData;
                        info.Invoke(null, new object[] { cf }); // <-------ERR
//Object of type 'NS1.ConfirmTheClient' cannot be converted to type 'System.Func`2[System.String,System.String]'
  }
}
public class MyHub : Hub
{
       public static void MyDelegate(Func<string, string> methodName)
        {
           //...
            return;
        }
}
...
Рейтинг: 0 / 0
05.03.2015, 16:01
    #38896218
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
так?
Код: c#
1.
public Func<string,string> ConfirmTheClient;
...
Рейтинг: 0 / 0
05.03.2015, 16:03
    #38896228
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
Точнее, зачем тут вообще объявлять делегат ConfirmTheClient?
Код: c#
1.
2.
3.
4.
                       Type type = typeof(MyHub);
                        MethodInfo info = type.GetMethod(@"MyDelegate");
                        Func<string,string> cf = RetrieveContextData;
                        info.Invoke(null, new object[] { cf });
...
Рейтинг: 0 / 0
05.03.2015, 16:36
    #38896287
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
Shocker.ProТочнее, зачем тут вообще объявлять делегат ConfirmTheClient?
Код: c#
1.
2.
3.
4.
                       Type type = typeof(MyHub);
                        MethodInfo info = type.GetMethod(@"MyDelegate");
                        Func<string,string> cf = RetrieveContextData;
                        info.Invoke(null, new object[] { cf });



точно! спасибо, протормозил.
Но дальше:
эта функция мне нужна как параметр, чтобы сохранить один раз и использовать ее в других вызовах класса.
Получается, что ее нельзя переприсвоить

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        private Func<string, string> shadowDelegate;
        public static void ShadowDelegate(Func<string, string> methodName)
        {
            shadowDelegate = methodName; // <-err
            return;
        }
        public void SendMsg(string name, string message)
        {
            //shadowDelegate; <-----------------вызов
            return;
        }
...
Рейтинг: 0 / 0
05.03.2015, 16:47
    #38896313
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
Почему?
Ты обязательный параметр забыл при вызове
...
Рейтинг: 0 / 0
05.03.2015, 17:15
    #38896346
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как засунуть делегат в Invoke?
Shocker.ProПочему?
Ты обязательный параметр забыл при вызове

до вызова не дошло, при попытке переприсвоить компилятор дает ошибку
shadowDelegate = methodName;

Я сделал через делегат

Код: c#
1.
2.
3.
4.
5.
6.
        private static ConfirmTheClient cf = null;
        public static void ShadowDelegate(Func<string, string> methodName)
        {
           cf = new ConfirmTheClient(methodName);
            return;
        }




Теперь в других методах класса можно вызывать cf
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как засунуть делегат в Invoke? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]