У меня простой интерфейс:
public interface IRepo<T>
{
T GetSingle(int id);
IQueryable<T> GetCollection();
}
И несколько реализаций этого интерфейса:
public class ParametersFields_Repo :
GenericRepository<Parameters_Fields, MachineDbConnection>,
IRepo<Parameters_Fields>
{
...
}
public class FieldTypesDict_Repo :
GenericRepository<Parameters_FieldTypes_Dict, MachineDbConnection>,
IRepo<Parameters_FieldTypes_Dict>
{
...
}
Теперь я пытаюсь зарегистрировать этот IRepo<T>
как TService
в SimpleИнжектор, как это выглядит:
private void ConfigureSimpleInjector()
{
var container = new Container();
RegisterDIServices(container);
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
}
private void RegisterDIServices(Container container)
{
container.Register<IFieldModelRepository, FieldModelRepository>(
Lifestyle.Scoped);
container.Register<IField_Repo, Field_Repo>(Lifestyle.Scoped);
container.Register<IRepo<Parameters_Fields>, ParametersFields_Repo>(
Lifestyle.Scoped);
}
Но в строке:
container.Register<IRepo<Parameters_Fields>, ParametersFields_Repo>(
Lifestyle.Scoped);
Я получаю сообщение об ошибке:
Тип 'DbAccess.Repositories.ParametersFields_Repo 'нельзя использовать в качестве параметра типа' TImplementation 'в универсальном типе или методе' Container.Register (Lifestyle) '.Не существует неявного преобразования ссылок из 'DbAccess.Repositories.ParametersFields_Repo' в 'DbAccess.Interface.IRepo'
. Не могли бы вы сказать, что является хорошим подходом для этого ?.Это мой первый раз, когда я пытаюсь использовать DI в проекте.