2010-10-29 5 views
0

Salut mandaté, je pensais à ce cas:accès méthode approximé dans une classe

public class MyService { 

     private IList<Entity> data; 

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

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

Considérons une situation où j'ai une procuration de cette classe (par exemple intercepteur exploitation forestière). Le problème est: avec la méthode GetData() GetDataAdvanced() use: le proxy ou normal? Après un test, il semble qu'il n'utilise pas de proxy. Je me demandais s'il est possible de changer un tel comportement?

Merci pour votre aide.

Kuba

Répondre

1

Cela dépend. Lorsque vous utilisez ProxyGenerator.CreateClassProxy() ou ProxyGenerator.CreateInterfaceProxyWithoutTarget(), le proxy sera une classe enfant de votre classe d'origine qui est instanciée et puis, oui, GetData() appellera effectivement le proxy.

Si vous utilisez cependant ProxyGenerator.CreateInterfaceProxyWithTarget() et vous fournissez votre propre instance de MyService, le proxy est un conteneur de l'extérieur et les appels internes comme l'appel GetData() ne passera pas par le proxy.

+0

thx - bon à savoir, encore une chose - est-il possible de spécifier quelle stratégie de génération de proxy utiliser (sans ou avec cible) lors de l'enregistrement de composants avec windsor container? – user483071

+0

Désolé, aucune expérience avec Windsor. –