开发者

how to call anonymous delegate dynamically

开发者 https://www.devze.com 2022-12-11 23:37 出处:网络
I hava a delegate public delegate void Context(); And i had implemented it by anonymous method, public Context fakeHttpContext = () =>

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

精彩评论

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