【发布时间】:2011-04-07 17:43:43
【问题描述】:
我正在代码中创建 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;
}
感谢您的帮助
【问题讨论】:
标签: proxy properties virtual aop spring.net