Я столкнулся с проблемой при попытке разрешить мои общие репозитории для доступа к базе данных. Когда я использую эти два в качестве реализации / интерфейса репозитория, я не могу решить, например, IRepository<ICustomer>
:
Интерфейс:
public interface IRepository<T> where T : IDbModel
{ ... }
Реализация:
public class Repository<T> : IRepository<T> where T : DbModel
{ ... }
Но когда я заменяю IDbModel
и DbModel
на class
, в обоих случаях это работает как ожидалось.
Моя регистрация выглядит так:
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterType<DbModel>().As<IDbModel>();
builder.RegisterType<Customer>().As<ICustomer>();
Для полноты, вот ICustomer
:
public interface ICustomer : IDbModel
{ ... }
Customer
:
public class Customer : DbModel, ICustomer
{ ... }
IDbModel
:
public interface IDbModel
{ ... }
И DbModel
(я проверял, работает ли я при удалении abstract
, но это не так):
public abstract class DbModel : IDbModel
{ ... }
Мне было интересно, возможно ли сделать мою первую попытку как-нибудь сработавшей?