我有一个简单的装饰器类,如下所示。请注意我的公共方法是如何创建待装饰类的新实例,然后将调用转发到该实例的。
这个类的问题是,每当IMyService
更新时,我也必须更新这个代理类。
public class MyProxyService : IMyService
{
readonly IMyServiceFactory _realServiceFactory;
public MyProxyService(IMyServiceFactory realServiceFactory)
{
_realServiceFactory = realServiceFactory;
}
private IMyService CreateRealService()
{
return _realServiceFactory.CreateRealService();
}
public int A()
{
return CreateRealService().A();
}
public int B(int b1)
{
return CreateRealService().B(int b1);
}
public int C(int c1, int c2)
{
return CreateRealService().C(c1,c2);
}
public int D(int d1, int d2, int d3)
{
return CreateRealService().D(d1,d2,d3);
}
public void E()
{
CreateRealService().E();
}
}
我尝试使用创建动态版本Castle.DynamicProxy
,但到目前为止没有任何运气。
任何人都知道动态创建这样的装饰器的好方法吗?