2017-02-22 9 views
2

в asp.net ядра DI, со следующим:добавляющих общие услуги в ASP.Net ядра DI

public interface IRepository<T> where T:class {} 
public class Repository<T> : IRepository<T> where T:class {} 

Я сделаю следующее зарегистрировать мои: службы по

services.AddScoped(typeof(IRepository<>), typeof(Repository<>)); 

, но теперь У меня есть следующие услуги:

public interface IContextProvider<T1,T2> {} 
public class ContextProviderOne<T2> : IContextProvider<ContextClass1,T2> { } 
public class ContextProviderTwo<T2> : IContextProvider<ContextClass2,T2> { } 

Как я могу добавить свои услуги в DI?

+1

Как 'services.AddScoped (TypeOf (IRepository <>), TypeOf (IRepository <>)),' должен работать, 'IRepository <>' не может быть экземпляр, это интерфейс, а не конкретный класс. – Tseng

+0

Вы хотите сказать, что следующая регистрация не работает со встроенным контейнером? 'services.AddScoped (typeof (IContextProvider <,>), typeof (ContextProviderOne <>)); services.AddScoped (typeof (IContextProvider <,>), typeof (ContextProviderTwo <>)); '? – Steven

+1

@ Цен: Это, очевидно, опечатка. – Steven

ответ

0

Вы пробовали:

services.AddScoped(typeof(IContextProvider<T1>), typeof(ContextProviderOne<T1>)); 
services.AddScoped(typeof(IContextProvider<T2>), typeof(ContextProviderTwo<T2>)); 
Смежные вопросы