I hava a delegate
public delegate void Context();
And i had implemented it by anonymous method,
public Context fakeHttpContext = () =>
{
...
create fake http context.
};
I dont' want to execute the fakeHttpContext by
fakeHttpContext.Invoke()
I wonder if i could invoke it by known the delegate name. is there anything in reflection likes:
DelegateInfo info = typeof(class).开发者_Go百科GetDelegate("fakeHttpContext");
info.Invoke();
thanks
Don't you find it a bit odd to try to retrieve an anonymous method by name? It's kind of a contradiction in itself.
That mere fact should give you a hint that what you're doing probably makes no sense. Just declare an standard method that implements the delegate or an event and invoke it.
What you really want to do is getting the field fakeHttpContext. Assuming you class type is named MyObject :
MyObject obj = new MyObject();
Context context = (Context)(typeof(MyObject).GetField("fakeHttpContext").GetValue(obj));
context();
This is what you asked for, even if it's dirty... Reflection is rarely a good idea.
精彩评论