2010-04-29 3 views
0

Je crée un proxy spring.net en code en utilisant l'objet ProxyFactory avec ProxyTargetType à true pour avoir un proxy sur un objet complexe non interfacé. Proxying semble ok jusqu'à ce que j'appelle une méthode sur cet objet. La méthode fait référence à une propriété publique et si cette propriété n'est pas virtuelle, sa valeur est null.Spring.net usine de proxy avec le type de cible a besoin de propriété virtuelle?

Cela ne se produit pas si j'utilise Spring.Aop.Framework.AutoProxy.InheritanceBasedAopConfigurer dans le fichier de configuration printanier mais dans ce cas je ne peux pas l'utiliser car le contexte printanier ne possède pas cet objet.

Est-ce normal d'avoir un tel comportement ou y at-il un tweak pour effectuer ce que je veux (méthode virtuelle de l'objet proxy sans avoir à changer les propriétés virtuelles)? Notez que j'ai essayé les valeurs factory.AutoDetectInterfaces et factory.ProxyTargetAttributes mais cela n'aide pas.

Mon code de création proxy:

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

Merci pour votre aide

Répondre

1

OK si les propriétés doivent être virtuelles.

Questions connexes