我有一位代表
public delegate void Context();
我已经通过匿名方法实现了它,
public Context fakeHttpContext = () =>
{
...
create fake http context.
};
我不想'
执行fakeHttpContext
fakeHttpContext.Invoke()
我想知道我是否可以通过知道委托名称来调用它。有什么反思喜欢:
DelegateInfo info = typeof(class).GetDelegate("fakeHttpContext");
info.Invoke();
感谢
答案 0 :(得分:4)
您是否觉得尝试按名称检索匿名方法有点奇怪?这本身就是一种矛盾。
这个事实应该会给你一个暗示,你所做的事情可能毫无意义。只需声明一个实现委托或事件的标准方法并调用它。
答案 1 :(得分:2)
你真正想做的是获取字段fakeHttpContext。 假设您的类类型名为MyObject:
MyObject obj = new MyObject();
Context context = (Context)(typeof(MyObject).GetField("fakeHttpContext").GetValue(obj));
context();
这就是你要求的,即使它很脏......反思很少是一个好主意。