У меня около 20 таких регистраций в приложении:
builder.RegisterType(typeof(FilterParser<>)).As(typeof(IFilterParser<>)).InstancePerDependency();
Когда я пытаюсь создать свой контейнер, я получаю сообщение об ошибке:
The type 'My.Namespace.FilterParser`1[TEntity]' is not assignable to service 'My.Namespace.IFilterParser`1'.'
Обратите внимание, что разница заключается в [TEntity] в реализации и их отсутствии в интерфейсе.
Мои сервисы реализуют интерфейсы:
public class FilterParser<TEntity> : IFilterParser<TEntity> where TEntity : new ()
public interface IFilterParser<TEntity> where TEntity : new ()
Я также реализовал эту регистрацию с помощью ядра .net, и она отлично работает, но в Autofac она просто отказывается работать.
Я даже пробовал AsImplementedInterfaces и получаю ту же ошибку
builder.RegisterType(typeof(FilterParser<>)).AsImplementedInterfaces()
.InstancePerDependency();
Да, похожее имя, но у меня нет частично открытых дженериков.





Используйте метод построения RegisterGeneric():
builder.RegisterGeneric(typeof(FilterParser<>))
.As(typeof(IFilterParser<>))
.InstancePerDependency();
When a matching service type is requested from the container, Autofac will map this to an equivalent closed version of the implementation type
Возможный дубликат Зарегистрируйте универсальный тип в Autofac