繁体   English   中英

C#:是否存在将方法调用转发到另一个对象(具有相同接口)的通用方法?

[英]C# : Is there a generic way to forward a method call to another object (with the same interface)?

有没有一种以通用方式实现此模式的方法?

调度程序对象和一堆工作者对象都源自同一接口。

任何对调度程序对象的方法调用都需要被调度(转发)到其中一个工作程序对象(带有所有参数)。

每个方法都需要发现自己的名称,在辅助对象中找到相应的方法,发现参数,然后进行调用。 如果可能,请不要使用变量参数机制。

有什么办法可以做到这一点? 反射? 代码生成?

它可能不是特别简单,但是却非常牢固-看一下Castle.DynamicProxy: http ://kozmic.pl/dynamic-proxy-tutorial/

一种可能的方法是使调度程序对象中的每个方法引发一个事件,并使所有辅助对象都订阅该事件。 (认为​​这称为“多播委托”模式)。

我想这可能不像您想要的那样“通用”,但是可以是一种实现大多数目标的更简单方法。

如果您想采用代码生成途径,则此t4文件的功能类似: http : //gist.github.com/647885

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM