Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Дженерик-метод с тремя параметрами типа - как вызвать хитро... / 14 сообщений из 14, страница 1 из 1
04.03.2015, 12:32
    #38894462
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Есть у меня метод

Код: c#
1.
public void MyMethod<T1, T2, T3>(Func<T1, T3> arg1)



И хочу я его вызвать, указав T1 и T2 явно, а T3 чтобы было выведено из параметра (ибо там может оказаться лямбда с анонимным делегатом на выходе).
Типа
Код: c#
1.
MyClass.MyMethod<int, string, ?>(n => new { value = n + 5, foo = "foo" })



Я слишком многого хочу?
...
Рейтинг: 0 / 0
04.03.2015, 12:34
    #38894465
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.Pro,

перегрузка методов не подходит?
...
Рейтинг: 0 / 0
04.03.2015, 12:35
    #38894468
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Это вариант на случай, если не получится проще
...
Рейтинг: 0 / 0
04.03.2015, 12:36
    #38894469
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.ProЭто вариант на случай, если не получится прощеХотя нет, не подойдет, набор типов параметров слишком велик....
...
Рейтинг: 0 / 0
04.03.2015, 12:54
    #38894490
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
свою конкретную задачу решил через
Func<T1, object>
на выход T3 не идет, так что строгая типизация тут не нужна.


Так что вопрос теперь носит академический характер
...
Рейтинг: 0 / 0
04.03.2015, 15:52
    #38894760
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.Pro
через метод обертку, показывал же не так давно..
...
Рейтинг: 0 / 0
04.03.2015, 16:03
    #38894778
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Где-то в степиShocker.Pro
через метод обертку, показывал же не так давно..либо не мне, либо я не понимаю, как применить в данном случае...
...
Рейтинг: 0 / 0
04.03.2015, 18:12
    #38894965
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.Pro,
Можно как то так.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
         public class MyClass<T1, T2>
        {
            private T1 t1 = default (T1);
            public void MyMethod<T3>(Func<T1, T3> arg1)
            {
                var tmp = arg1(t1);
            }
        }


Код: c#
1.
2.
           var mc = new MyClass<string, long>();
           mc.MyMethod(s => s.Length);
...
Рейтинг: 0 / 0
04.03.2015, 18:35
    #38895010
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
ЕвгенийВ,

Не, класс типизированным сделать не получится
...
Рейтинг: 0 / 0
04.03.2015, 18:55
    #38895029
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.Pro,
а что мешает?
...
Рейтинг: 0 / 0
04.03.2015, 18:55
    #38895030
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.ProЕвгенийВ,

Не, класс типизированным сделать не получится

Слава Тьюрингу....
Хоть это еще не заперегиперпрограммировали.....

8-Х
...
Рейтинг: 0 / 0
04.03.2015, 19:12
    #38895054
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
ЕвгенийВа что мешает?то, что создание экземпляра этого класса вне компетенции контекста, вызывающего метод
...
Рейтинг: 0 / 0
04.03.2015, 19:16
    #38895061
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Shocker.Pro,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public void MyMethod<T1, T2, T3>(Func<T1, T3> arg1)
        {
            var ee = arg1(default(T1));
            
        }

        public void Wrapper<T>(T t) where T : class
        {
             MyMethod<string, int, T>(n => new {value = n + 5, foo = "foo"} as T);
        }

call
Wrapper(new {value = "5", foo = "foo"});
...
Рейтинг: 0 / 0
04.03.2015, 19:36
    #38895084
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дженерик-метод с тремя параметрами типа - как вызвать хитро...
Где-то в степи,

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


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