2009-11-18 38 views
0

我哈瓦委托如何调用匿名委托动态

public delegate void Context();

,我不得不通过匿名方法来实现它,

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

我不”想


    fakeHttpContext.Invoke() 
执行fakeHttpContext

我不知道我是否可以通过已知委托名称来调用它。有反射任何喜欢:


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

感谢

+1

你能否提供何时何地使用它? –

回答

2

你真正想做的是让现场fakeHttpContext什么。 假设你班型被命名为MyObject:

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

这是你问什么,即使它是脏兮兮,反思是很少一个好主意。

+0

谢谢,它的工作原理 – user192415

3

难道你不觉得有点奇怪,试图通过名称检索匿名方法?这本身就是一种矛盾。

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