MediatR mit ASP.NET Core DI

8

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 MediatR von Jimmy Bogard gefunden.

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%     
Nyegaard 15.02.2016, 12:55
quelle

3 Antworten

16

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 zum GitHub-Projekt .

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:

  

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:

%Vor%     
dmcquiggin 17.09.2016, 22:56
quelle
2

Ich habe es funktioniert, mein Code:

%Vor%

und ich habe eine Klasse, die den GetRequiredService implementiert, den MultiInstanceFactory benötigt:

%Vor%     
Nyegaard 15.02.2016 13:56
quelle
0

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.

    
Colin Pear 07.06.2016 17:28
quelle

Tags und Links