如何动态调用匿名委托

时间:2009-11-18 08:49:07

标签: c# reflection delegates anonymous

我有一位代表

public delegate void Context();

我已经通过匿名方法实现了它,

public Context fakeHttpContext = () =>
        {
                ...
                create fake http context.
        };

我不想'

执行fakeHttpContext

    fakeHttpContext.Invoke()

我想知道我是否可以通过知道委托名称来调用它。有什么反思喜欢:


    DelegateInfo info =     typeof(class).GetDelegate("fakeHttpContext");
    info.Invoke();

感谢

2 个答案:

答案 0 :(得分:4)

您是否觉得尝试按名称检索匿名方法有点奇怪?这本身就是一种矛盾。

这个事实应该会给你一个暗示,你所做的事情可能毫无意义。只需声明一个实现委托或事件的标准方法并调用它。

答案 1 :(得分:2)

你真正想做的是获取字段fakeHttpContext。 假设您的类类型名为MyObject:

MyObject obj = new MyObject();
Context context = (Context)(typeof(MyObject).GetField("fakeHttpContext").GetValue(obj));
context();

这就是你要求的,即使它很脏......反思很少是一个好主意。