2016-02-05 11 views
5

Mam zamiar przenieść mój system do warstwy usług ogólnych.Jak zarejestrować ogólny serwis

public interface IAbcService<TEntity> where TEntity : class 

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

Próbowałem czegoś, ale to nie działa.

Używam niektórych z moich podmiotów i wraz z tym próbuję dodać je do właściwości.

Jak mogę zarejestrować ogólną usługę w rdzeniu asp.net?

+0

Jeśli odpowiedź spełni Twoje oczekiwania, oznacz ją jako zaakceptowaną. Jeśli nie, skomentuj odpowiedź lub edytuj swoje pytanie. – JonTheMon

Odpowiedz

-2

Czy próbowałeś

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

+0

To się nie skompiluje. Podczas odwoływania się do otwartych generics należy używać instancji 'System.Type' wykonawczych za pośrednictwem' typeof() '. – Technetium

7

Chciałem przed spróbować dokładnie to samo i mam go do pracy tak :

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

Weź pod uwagę różne struktury, to jest rejestrowanie przez parametry w metodzie.

Aby rozwinąć, jak widać w powyższym przykładzie, z nowym pakietem ramek DNX możemy teraz rejestrować zarówno otwarte, jak i zamknięte generyczne. Wypróbuj, obie linie będą działać.