我在一个应用中喜欢20个这样的注册:
builder.RegisterType(typeof(FilterParser<>)).As(typeof(IFilterParser<>)).InstancePerDependency();
当我尝试构建容器时,出现如下错误:
类型'My.Namespace.FilterParser`1 [TEntity]'无法分配给服务'My.Namespace.IFilterParser`1'。'
请注意,区别在于实现中的[TEntity]
和界面中缺少public class FilterParser<TEntity> : IFilterParser<TEntity> where TEntity : new ()
public interface IFilterParser<TEntity> where TEntity : new ()
。
我的服务确实实现了接口:
AsImplementedInterfaces
我还使用.net内核实现了此注册,它可以正常工作,但是在Autofac中,它只是拒绝工作。
我什至尝试了builder.RegisterType(typeof(FilterParser<>)).AsImplementedInterfaces()
.InstancePerDependency();
,但遇到相同的错误
try to add a sudo before pip install otherwise you can create virtual env in witch you can install your requirement without having issues
答案 0 :(得分:3)
使用RegisterGeneric()
构建器方法:
builder.RegisterGeneric(typeof(FilterParser<>))
.As(typeof(IFilterParser<>))
.InstancePerDependency();
从容器请求匹配的服务类型时,Autofac会将其映射到实现类型的等效关闭版本