C# 将不同的泛型类型注册为已扫描
我尝试使用接口C# 将不同的泛型类型注册为已扫描,c#,generics,autofac,C#,Generics,Autofac,我尝试使用接口IRepository注册泛型类型Repository,其中T是IEntity builder.RegisterAssemblyTypes(assemblies) .Where(t => typeof(IEntity).IsAssignableFrom(t)) .WithMetadata("Type", (t) => t) .AsImplementedInterfaces() .InstancePerLifetim
IRepository
注册泛型类型Repository
,其中T
是IEntity
builder.RegisterAssemblyTypes(assemblies)
.Where(t => typeof(IEntity).IsAssignableFrom(t))
.WithMetadata("Type", (t) => t)
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
现在的问题是如何注册找到我的类的每个ienty
Repository<T>: IRepository<T> where T: IEntity
Repository:i存储库,其中T:ienty
实际上,您不需要注册实体,只需注册存储库即可。Autofac对泛型有极好的支持,包括开放类型和封闭类型。从文档中,注册存储库的开放泛型类型:
builder.RegisterGeneric(typeof(Repository<>))
.As(typeof(IRepository<>));
builder.RegisterGeneric(typeof(Repository))
.As(类型(假定));
现在,您可以解析以下关闭的存储库类型:
var userRepo = container.Resolve<IRepository<User>>();
var userRepo=container.Resolve();