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

Код: 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
Как засунуть делегат в Invoke?
    #38896218
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так?
Код: c#
1.
public Func<string,string> ConfirmTheClient;
...
Рейтинг: 0 / 0
Как засунуть делегат в Invoke?
    #38896228
Фотография 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 });
...
Рейтинг: 0 / 0
Как засунуть делегат в Invoke?
    #38896287
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как засунуть делегат в Invoke?
    #38896313
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему?
Ты обязательный параметр забыл при вызове
...
Рейтинг: 0 / 0
Как засунуть делегат в Invoke?
    #38896346
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как засунуть делегат в Invoke?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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