Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将不同的泛型类型注册为已扫描_C#_Generics_Autofac - Fatal编程技术网

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();