Я пытаюсь зарегистрировать/разрешить общий тип в Autofac, который получает параметр типа, который является интерфейсом и уже зарегистрирован.Autofac разрешает общий тип с интерфейсом как параметр
У меня есть следующие:
public interface IBaseEntity
{
}
public partial interface IRepository<T>
where T : IBaseEntity
{
}
public class NhRepository<T> : IRepository<T>
where T : IBaseEntity
{
}
public interface IEntity : IBaseEntity
{
}
public class Entity : IEntity
{
}
Регистрация:
//registering type
builder.RegisterType<Entity>().As<IEntity>();
//registering generic type in Autofac
builder.RegisterGeneric(typeof(NhRepository<>))
.As(typeof(IRepository<>)).InstancePerRequest();
Попытка решить:
//the code below returns NhRepository<IEntity>().
_containerManager.Resolve<IRepository<IEntity>>();
Я хочу способ получить NhRepositoy<Entity>
вместо NhRepository<IEntity>()
Любая идея?
Это не работает, поскольку вы не можете отличать NhRepository от IRepository , независимо от классов, реализующих соответствующие интерфейсы. –