您好我在考虑这样的情况:
public class MyService {
private IList<Entity> data;
public virtual IList<Entity> GetData()
{
return data;
}
public virtual IList<Entity> GetDataAdvanced()
{
return GetData();
}
}
考虑我有这个类的代理(例如日志记录拦截器)的情况。问题是:用GetData()方法将GetDataAdvanced()用于:代理的一个还是正常的?测试后,我看起来不使用代理。我想知道是否有可能改变这种行为?
感谢您的帮助。
库巴
答案 0 :(得分:1)
这取决于。当您使用ProxyGenerator.CreateClassProxy()
或ProxyGenerator.CreateInterfaceProxyWithoutTarget()
时,代理将是原始类的子类,它将被实例化,然后,是的,GetData()
将实际调用代理。
如果您使用的是ProxyGenerator.CreateInterfaceProxyWithTarget()
并且您提供了自己的MyService
实例,则代理只是来自外部的包装,而GetData()
调用之类的内部调用则不会通过代理。