【问题标题】:Castle.DynamicProxy2 generate proxy of delegate typeCastle.DynamicProxy2 生成委托类型的代理
【发布时间】:2010-11-26 13:38:49
【问题描述】:

有没有办法创建一个委托类型的代理并让它在 DynamicProxy2 中实现额外的接口,并且还能够拦截对生成的委托的调用?

我通常生成代理的方式会引发异常,因为委托类型是密封的。

【问题讨论】:

  • 跟进我的回答。在 DP 2.2 中,扩展当前的代理生成器和/或添加新的代理生成器会更容易(好吧,说真的,现在真的很难)(如果你想查看代码,存储库中有一个分支)。因此,您将能够创建一个类型,该类型具有您选择的签名方法(例如您所针对的委托类型之一),并通过包装用户提供的委托的新委托在实例上公开该方法。这应该为一般情况做好准备。如果您想继续讨论,请给我发电子邮件了解详细信息。
  • 其实只是给你发了邮件,这听起来很有趣,等待你的回复!

标签: delegates castle-dynamicproxy


【解决方案1】:

帕特里克,

您不需要 DynamicProxy 来“代理”委托 这应该足够了:

Action delegateToproxy = new Foo().Bar; //Bar is public void Bar(){}
Action proxy = delegate
               {
                  Console.WriteLine("Intercepted!");
                  delegateToProxy();
               }
return proxy;

[更新:这个问题与这个特定问题无关] 您想为此公开哪种 API?

如果您想跟进此对话,请通过电子邮件与我联系,或在 Castle 用户组上发起线程。

【讨论】:

  • 正如您在更新中所说,这只是完成了一半,剩下的问题是我不能让它实现任何额外的接口。我会将这个答案标记为已接受的答案,因为它在一般情况下是一个很好的答案。
猜你喜欢
  • 2012-11-04
  • 2010-10-20
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多