2016-02-05 2 views
5

Я планирую переместить мою систему на общий сервисный уровень.Как зарегистрировать общий сервис

public interface IAbcService<TEntity> where TEntity : class 

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

Я пробовал что-то, но это не сработало.

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

Я использую некоторые из моих сущностей, и вместе с этим я пытаюсь добавить его в свойства.

Как я могу зарегистрировать общий сервис в ядре asp.net?

+0

Если ответ отвечает вашим потребностям, отметьте его как принятый. Если нет, прокомментируйте ответ или отредактируйте свой вопрос. – JonTheMon

ответ

-2

Вы пробовали

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

+0

Это не скомпилируется. Вы можете использовать экземпляры 'System.Type' во время выполнения через' typeof() 'при ссылке на открытые дженерики. – Technetium

7

Я хотел, прежде чем попробовать ту же самую вещь, и я получил его на работу, как это :

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

Имейте в виду разную структуру, это регистрация по параметрам в методе.

Чтобы разработать, как вы можете видеть в приведенном выше примере, новый пакет фреймов DNX, мы теперь можем зарегистрировать как открытые, так и закрытые дженерики. Попробуйте, обе линии будут работать.

Смежные вопросы