访问代理类中的代理方法

时间:2010-10-29 05:59:09

标签: c# castle-windsor

您好我在考虑这样的情况:

 public class MyService {

        private IList<Entity> data;

        public virtual IList<Entity> GetData()
        {
            return data;
        }        

        public virtual IList<Entity> GetDataAdvanced()
        {
           return GetData();
        }
  } 

考虑我有这个类的代理(例如日志记录拦截器)的情况。问题是:用GetData()方法将GetDataAdvanced()用于:代理的一个还是正常的?测试后,我看起来不使用代理。我想知道是否有可能改变这种行为?

感谢您的帮助。

库巴

1 个答案:

答案 0 :(得分:1)

这取决于。当您使用ProxyGenerator.CreateClassProxy()ProxyGenerator.CreateInterfaceProxyWithoutTarget()时,代理将是原始类的子类,它将被实例化,然后,是的,GetData()将实际调用代理。

如果您使用的是ProxyGenerator.CreateInterfaceProxyWithTarget()并且您提供了自己的MyService实例,则代理只是来自外部的包装,而GetData()调用之类的内部调用则不会通过代理。