问题
I'm looking for a method to convert instance of MemberInfo
to "Func" type (to use it through lambda expression later).
Lets, say I have a member function of type
public bool func(int);
Using reflection, I somehow get instance of MemberInfo
"mi", now i want to convert it to Func<int, bool>;
type. something like:
Func<int, bool f = myType.GetMember(mi.Name);
Is there a way to do it?
ps. Marc Grawell's answer resolves my issue, no need for further comments
回答1:
Func<int,bool> f = Delegate.CreateDelegate(
typeof(Func<int,bool>), target, (MethodInfo)mi);
Note here that target
is the object you want to use, since func
is a non-static
method. If it was a static
method, you can omit that (or pass null
). Alternatively, you can omit target
(or pass null
) if you make it a Func<Foo, int, bool>
where Foo
is the type that declares func
.
However!!! Note that having a Func<int,bool>
is largely meaningless in terms of creating a lambda expression; lambda expressions rarely use delegates.
来源:https://stackoverflow.com/questions/17942267/reflection-memberinfo-to-funct1-t2