简体   繁体   中英

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).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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM