Ich spiele mit dem neuen ASP.NET Core herum und erstelle derzeit eine API, die ich über ein JavaScript-Frontend aufrufen möchte.
Ich möchte das Mediatormuster verwenden, um die Kopplung zu reduzieren, und ich habe die Mediathek
Mein Problem besteht darin, es mit dem eingebauten DI zu verkabeln. Ich habe versucht, mir die Beispiele , kann aber nicht sehen, wie es in der ConfigureServices-Methode in der Startup-Klasse bindet.
Hat jemand einen Einblick?
UPDATE: Ich habe es funktioniert, von meiner ConfigureService-Methode:
%Vor% Ab Juli 2016 hat Jimmy Bogard, Autor von MediatR, ein Paket zur Registrierung von MediatR und Handlern mit dem ASP.Net Core DI-Dienst veröffentlicht (der tatsächlich die Schnittstelle IServiceCollection
ist, implementiert in Microsoft.Extensions.DependencyInjection
und die nicht auf die Verwendung innerhalb von ASP.Net Core beschränkt ist).
MediatR.Extensions.Microsoft.DependencyInjection
Link zu NuGet Paketinformationen .
Ein Blogbeitrag, in dem das Paket und seine Fähigkeiten vorgestellt werden, finden Sie unter hier
Beispiel Registrierung kopiert direkt aus dem (sehr kurzen) Blogpost:
%Vor%Dieses Paket führt mehrere Funktionen aus, um MediatR zu aktivieren, einschließlich der erforderlichen Überprüfung von Baugruppen für Handler:
%Vor%Sie können entweder die Assemblys übergeben, in denen sich Ihre Handler befinden, oder Sie können Type-Objekte von Assemblys übergeben, in denen sich diese Handler befinden. Die Erweiterung fügt die IMediator-Schnittstelle zu Ihren Diensten, allen Handlern und den richtigen Delegate-Factorys zum Laden von Handlern hinzu. Dann können Sie in Ihrem Controller einfach eine IMediator-Abhängigkeit verwenden:
Ich habe einen DI-Helper für ASP.NET Core RC2 erstellt, den Sie zu Ihrem Start hinzufügen können. Es gibt Ihnen grundlegende Konvention basierte Zuordnung, wenn Sie eine Klasse wie haben:
%Vor%Es wird IMyClass im IOC-Container abbilden, der es für die Injektion verfügbar macht.
Ich habe auch die Mappings für MediatR hinzugefügt.
Um es zu verwenden Fügen Sie einfach die Klasse zu Ihrem Projekt hinzu und fügen Sie dann in der Klasse startup.cs die Zeilen hinzu, die Sie für die ConfigureServices () -Methode benötigen:
%Vor%Ich habe die AddTransient () -Methode nur aus praktischen Gründen hinzugefügt (Sie könnten auch services.AddTransient () verwenden), stellt aber auch die IServiceCollection für den Fall bereit, dass Sie mehr damit tun müssen.
Sie können es auch wie mit der Erweiterung .WithMediatr () erweitern und eigene benutzerdefinierte Zuordnungen schreiben.
Tags und Links c# asp.net asp.net-core mediatr