我在代码中创建spring.net代理,使用ProxyFactory对象,ProxyTargetType为true,以便在非接口复杂对象上拥有代理。 代理似乎没问题,直到我在该对象上调用方法。该方法引用了一个公共属性,如果此属性不是虚拟属性,则其值为null。
如果我在spring配置文件中使用Spring.Aop.Framework.AutoProxy.InheritanceBasedAopConfigurer但是在这种情况下我不能使用它,因为Spring上下文不拥有此对象,所以不会发生这种情况。
这是正常的,是否有这样的行为或是否有一个调整来执行我想要的(代理对象虚拟方法而不必更改属性虚拟)? 请注意,我尝试了factory.AutoDetectInterfaces和factory.ProxyTargetAttributes值,但没有帮助。
我的代理创建代码:
public static T CreateMethodCallStatProxy<T>()
{
// Proxy factory
ProxyFactory factory = new ProxyFactory();
factory.AddAdvice(new CallMonitorTrackerAdvice());
factory.ProxyTargetType = true;
// Create instance
factory.Target = Activator.CreateInstance<T>();
// Get proxy
T proxiedClass = (T)factory.GetProxy();
return proxiedClass;
}
感谢您的帮助
答案 0 :(得分:1)
好的,所以属性需要是虚拟的。