0

我有一个代表

public delegate void Context();

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

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

我不想通过执行 fakeHttpContext


    fakeHttpContext.Invoke()

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


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

谢谢

4

2 回答 2

4

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

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

于 2009-11-18T08:56:01.553 回答
2

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

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

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

于 2009-11-18T08:52:43.193 回答