2010-04-29 5 views
0

인터페이스가 아닌 복잡한 객체에 프록시를 사용하려면 ProxyTargetType과 함께 ProxyFactory 객체를 true로 사용하여 코드에서 spring.net 프록시를 만듭니다. 프록시가 해당 객체에 대한 메소드를 호출 할 때까지는 괜찮은 것처럼 보입니다. 이 메서드는 public 속성을 참조하며이 속성이 가상이 아닌 경우 value는 null입니다.대상 유형이있는 spring.net 프록시 팩토리에는 가상 속성이 필요합니까?

스프링 구성 파일에 Spring.Aop.Framework.AutoProxy.InheritanceBasedAopConfigurer를 사용하면 이런 일이 발생하지 않지만 스프링 컨텍스트가이 객체를 소유하지 않기 때문에이 경우에는 사용할 수 없습니다.

이러한 동작이 정상적으로 발생합니까 아니면 원하는대로 수행 할 수 있습니까 (가상 속성을 변경하지 않고도 객체 가상 메서드를 프록시 할 수 있습니까)? 참고 : factory.AutoDetectInterfaces 및 factory.ProxyTargetAttributes 값을 시도했지만 도움이되지 않습니다.

내 프록시 생성 코드 : 당신의 도움이

답변

1

속성을 가상 할 필요가 있으므로 확인을위한

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; 
    } 

감사합니다.

관련 문제