Ich versuche, meine generische Schnittstellen mit einem Dekorator zu umwickeln, aber es funktioniert einfach nicht, es scheint mir von den anderen Fragen, dass der einzige Weg dies zu tun ist, indem es explizit für jeden Dekorateur tut, Meine Frage ist, ob es möglich ist, alle Typen, die eine bestimmte Schnittstelle mit einem bestimmten Decorator in Ninject implementieren, zu umbrechen.Generic Decorator Muster mit ninject
Code:
static void BindMediatr(IKernel kernel) {
kernel.Components.Add < IBindingResolver, ContravariantBindingResolver >();
kernel.Bind(scan => scan.FromAssemblyContaining <IMediator>()
.SelectAllClasses()
.BindDefaultInterface());
kernel.Bind <SingleInstanceFactory>().ToMethod(ctx => t => ctx.Kernel.Get(t));
kernel.Bind <MultiInstanceFactory>().ToMethod(ctx => t => ctx.Kernel.GetAll(t));
kernel.Bind(
x => x.FromThisAssembly()
.SelectAllClasses()
.InheritedFromAny(typeof(IAsyncRequestHandler < , >))
.BindAllInterfaces());
kernel.Bind(typeof(IAsyncRequestHandler < , >))
.To(typeof(Decorater < , >))
.WhenInjectedInto <ApiController>();
}
public class Decorater < TRequest, TResponse >
: IAsyncRequestHandler < TRequest, TResponse >
where TRequest: IAsyncRequest <TResponse> {
IAsyncRequestHandler < TRequest,
TResponse > _decoratee;
public Decorater(IAsyncRequestHandler < TRequest, TResponse > decoratee) {
_decoratee = decoratee;
}
public Task <TResponse> Handle(TRequest message) {
// do something here
}
}
ich die Ergebnisse einer Invoke Aktion in der Lage sein müssen, zu erhalten, die von einem bestimmten Ergebnis sein könnte generischer Typ die Interception scheint nicht zu bieten ? –
Xerxes