2016-02-05 8 views
5

Ich plane, mein System auf generische Service-Ebene zu verschieben.Wie generische Service registrieren

public interface IAbcService<TEntity> where TEntity : class 

public class AbcService<TEntity> : IAbcService<TEntity> where TEntity : class 

Ich habe etwas versucht, aber es funktioniert nicht.

services.AddTransient<typeof(IAbcService<MyEntity>), AbcService(); 
.... 
.... 
.... 

Ich bin mit einigen meiner Entitäten und zusammen mit, dass ich versuche, es zu Eigenschaften hinzuzufügen.

Wie kann ich einen generischen Service in asp.net Core registrieren?

+0

Wenn eine Antwort Ihren Anforderungen entspricht, markieren Sie sie als akzeptiert. Wenn nicht, bitte kommentieren Sie die Antwort oder bearbeiten Sie Ihre Frage. – JonTheMon

Antwort

-2

Haben Sie

versucht

services.AddTransient < IAbcService <>, AbcService>()

+0

Das wird nicht kompilieren. Sie müssen Laufzeit-'System.Type'-Instanzen über' typeof() 'verwenden, wenn Sie auf offene Generika verweisen. – Technetium

7

Ich wollte vor genau die gleiche Sache, um zu versuchen, und ich habe es so zu arbeiten, :

services.AddTransient(typeof(IAbcService<>), typeof(AbcService<>)); 
services.AddTransient(typeof(IAbcService<Person>), typeof(AbcService<Person>)); 

Denken Sie an die andere Struktur, dies wird durch Parameter in einer Methode registriert.

Um zu zeigen, wie Sie im obigen Beispiel sehen, mit dem neuen DNX Framework-Paket können wir nun sowohl offene als auch geschlossene Generics registrieren. Probieren Sie es aus, beide Zeilen funktionieren.

Verwandte Themen