2009-08-09 6 views
2

J'ai une application qui fonctionne bien qui utilise Windsor pour IoC. Je veux enregistrer les appels de méthode, les paramètres et le temps d'exécution de tous les appels effectués à des composants instanciés par Windsor, donc je mis en place un LoggingInterceptor qui implémente IInterceptor, qui contient:Problème avec les appels de Windsor aux méthodes "généralisées" après l'ajout d'un intercepteur

Stopwatch sw = new System.Diagnostics.Stopwatch(); 
sw.Start(); 
invocation.Proceed(); // EXCEPTION IS THROWN HERE 
sw.Stop(); 
Logger.Debug(..... 

maintenant des opérations qui fonctionnait bien jettent VerificationExceptions avec le message suivant:

Méthode Repositories.RepositoryBase.GetAll: l'argument de type 'ET' enfreint la contrainte du paramètre de type 'ET'.

La signature de la méthode est la suivante:

public IList<ET> GetAll<ET>() where ET : EntityBase2, IEntity2 

(où EntityBase2 et IEntity2 sont de LLBLGenPro)

L'appelant de la méthode est la suivante:

public IList<ServerEntity> GetServers() 
{ 
    return GetRepository<IServerRepository>().GetAll<ServerEntity>(); 
} 

(où GetRepository <>() est juste une enveloppe autour de ServiceLocator)

Si je commente l'intercepteur de la configuration du château, tout fonctionne à nouveau correctement.

Pourquoi cela se produit-il maintenant, et y a-t-il une solution pour que je puisse utiliser mon intercepteur de connexion?

grâce

+0

Veuillez publier un test de test complet qui reproduit ce problème. –

+0

Je cours Windsor Castle 2.5 et j'ai exactement le même problème. –

Répondre

1

Si vous utilisez une ancienne version de Windsor (RC3 ou plus tôt), je ne pense pas qu'il prend en charge les intercepteurs sur les types génériques parce que l'ancien DynamicProxy ne le supporte pas.

Vous pourriez essayer de passer à la dernière version de Windsor. Il utilise DynamicProxy2 sous le capot, qui fonctionne avec des types génériques.

1

Cela se produit-il uniquement sous le débogueur Visual Studio?

Est-ce que cela se produit aussi sur la dernière version de Trunk de Castle? (que vous pouvez trouver here)

Questions connexes