Отражение 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> в значительной степени бессмысленно с точки зрения создания лямбда-выражения; Лямбда-выражения редко используют делегатов.

Другие вопросы по тегам