War nicht ganz sicher, wie man dies tituliert. Ich habe den folgenden Code:Bessere Möglichkeit, mehrere generische Implementierungen auszudrücken
builder.Register(context =>
{
var bus = context.Resolve<IBus>();
return bus.CreatePublishRequestClient<IGenerateProjectReport, IGenerateReportResult>(MessagingTimeout);
}).As<IRequestClient<IGenerateProjectReport, IGenerateReportResult>>();
builder.Register(context =>
{
var bus = context.Resolve<IBus>();
return bus.CreatePublishRequestClient<IGenerateInstanceReport, IGenerateReportResult>(MessagingTimeout);
}).As<IRequestClient<IGenerateInstanceReport, IGenerateReportResult>>();
builder.Register(context =>
{
var bus = context.Resolve<IBus>();
return bus.CreatePublishRequestClient<IGenerateInternalReport, IGenerateReportResult>(MessagingTimeout);
}).As<IRequestClient<IGenerateInternalReport, IGenerateReportResult>>();
Gibt es einen besseren Weg, dies auszudrücken? Scheint ein wenig überflüssig.
Edit:
Ich kann nicht das Register generische Fähigkeit meines Wissen verwenden, da ich eine Factory-Methode von einem anderen registrierten Dienst verwenden.
Mögliche Duplikat [Register Allgemein Typ mit Autofac] (http://stackoverflow.com/questions/15226536/register-generic-type-with-autofac) – Igor
@Igor Nicht ganz. Ich verwende das in diesem Beitrag beschriebene Muster und meine Implementierung passt nicht ganz, da ich eine Factory-Methode von einem aufgelösten Service anrufe. – chrisdrobison
Könnten Sie Schnittstellenvertrag teilen? Wie viele Registrierungen hast du? Müssen Sie alle Ihre Typen basierend auf einer Typbeschränkung automatisch registrieren? –