C# 如何动态调用匿名委托
我有一名代表C# 如何动态调用匿名委托,c#,reflection,delegates,anonymous,C#,Reflection,Delegates,Anonymous,我有一名代表 public delegate void Context(); 我用匿名方法实现了它 public Context fakeHttpContext = () => { ... create fake http context. }; 我不想执行fakeHttpContext fakeHttpContext.Invoke() 我不知道是否可以通过已知的委托名称来调用它。反思中
public delegate void Context();
我用匿名方法实现了它
public Context fakeHttpContext = () =>
{
...
create fake http context.
};
我不想执行fakeHttpContext
fakeHttpContext.Invoke()
我不知道是否可以通过已知的委托名称来调用它。反思中是否有以下内容:
DelegateInfo info = typeof(class).GetDelegate("fakeHttpContext");
info.Invoke();
谢谢您真正想做的是获取字段fakeHttpContext。 假设您的类类型命名为MyObject:
MyObject obj = new MyObject();
Context context = (Context)(typeof(MyObject).GetField("fakeHttpContext").GetValue(obj));
context();
这就是你要的,即使是脏的。。。反射很少是个好主意。您真正想做的是获取字段fakeHttpContext。 假设您的类类型命名为MyObject:
MyObject obj = new MyObject();
Context context = (Context)(typeof(MyObject).GetField("fakeHttpContext").GetValue(obj));
context();
这就是你要的,即使是脏的。。。反射很少是个好主意。您不觉得尝试按名称检索一个匿名方法有点奇怪吗?这本身就是一种矛盾
这仅仅是一个事实就应该给你一个暗示,你所做的可能毫无意义。只需声明一个实现委托或事件的标准方法并调用它。您不觉得尝试按名称检索一个匿名方法有点奇怪吗?这本身就是一种矛盾
这仅仅是一个事实就应该给你一个暗示,你所做的可能毫无意义。只需声明一个实现委托或事件的标准方法并调用它。您能否提供使用该方法的时间、地点和原因?您能否提供使用该方法的时间、地点和原因?