Je voudrais utiliser l'interception avec Unity, voici mon code:interception et l'unité des constructeurs
UnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<T, T>();
container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
return container.Resolve<T>();
Si T est une exception est levée une classe avec un constructeur avec des paramètres (un un constructeur vide) lorsque J'appelle Resolve, sinon ça marche. Comment intercepter un type qui a un constructeur non vide?
Mise à jour
UnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<T, T>();
container.Configure<InjectedMembers>().ConfigureInjectionFor<T>(new InjectionConstructor());
container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
return container.Resolve<T>();
Ce code fonctionne, mais si je veux utiliser un constructeur avec l'argument?
J'ai essayé ceci:
public static T Resolve<T>(object param)
{
UnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<T, T>();
container.Configure<InjectedMembers>().ConfigureInjectionFor<T>(new InjectionConstructor(param));
container.Configure<Interception>().SetDefaultInterceptorFor<T>(new VirtualMethodInterceptor());
return container.Resolve<T>();
}
Et dans mon code:
var service = Resolve<MyService>(4);
Je suis de retour avec la même exception que précédemment ...
Je ne veux pas injecter quoi que ce soit, je veux juste créer l'intercepteur qui appellera le constructeur vide de T. –