Отражение MemberInfo в Func<T1, T2>
Я ищу метод для преобразования экземпляра MemberInfo
к типу "Func" (чтобы использовать его позже через лямбда-выражение).
Скажем, у меня есть функция-член типа
public bool func(int);
Используя отражение, я как-то получаю экземпляр MemberInfo
"ми", теперь я хочу преобразовать его в Func<int, bool>;
тип. что-то вроде:
Func<int, bool f = myType.GetMember(mi.Name);
Есть ли способ сделать это?
пс. Ответ Марка Гравелла решает мою проблему, нет необходимости в дальнейших комментариях
1 ответ
Func<int,bool> f = Delegate.CreateDelegate(
typeof(Func<int,bool>), target, (MethodInfo)mi);
Обратите внимание, что здесь target
это объект, который вы хотите использовать, так как func
это неstatic
метод. Если бы это было static
метод, вы можете опустить это (или передать null
). Кроме того, вы можете опустить target
(или пройти null
) если вы сделаете это Func<Foo, int, bool>
где Foo
это тип, который объявляет func
,
Тем не мение!!! Обратите внимание, что имея Func<int,bool>
в значительной степени бессмысленно с точки зрения создания лямбда-выражения; Лямбда-выражения редко используют делегатов.