开发者

how to call anonymous delegate dynamically

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜