62,046
社区成员
发帖
与我相关
我的任务
分享
private readonly BD01IService _BD01IService;
private readonly MRAModel _MRAModel;
//public BD01Controller(BD01IService BD01IService)
//{
// _BD01IService = BD01IService;
//}
public static void MyBuild(this ContainerBuilder builder)
{
var assemblies = Helpers.ReflectionHelper.GetAllAssembliesCoreWeb();
//注册仓储 && Service
builder.RegisterAssemblyTypes(assemblies)
.Where(cc => cc.Name.EndsWith("Repository") |//筛选
cc.Name.EndsWith("Service"))
.PublicOnly()//只要public访问权限的
.Where(cc => cc.IsClass)//只要class型(主要为了排除值和interface类型)
.AsImplementedInterfaces();//自动以其实现的所有接口类型暴露(包括IDisposable接口)
//注册泛型仓储
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IBaseRepository<>));
/*
//注册Controller
Assembly[] controllerAssemblies = assemblies.Where(x => x.FullName.Contains(".CoreApi")).ToArray();
builder.RegisterAssemblyTypes(controllerAssemblies)
.Where(cc => cc.Name.EndsWith("Controller"))
.AsSelf();
*/
}
Register(services, "MRA.BLL", "MRA.IBLL");
public static void Register(IServiceCollection services, string implementationAssemblyName, string interfaceAssemblyName)
{
var implementationAssembly = Assembly.Load(implementationAssemblyName);
var interfaceAssembly = Assembly.Load(interfaceAssemblyName);
var implementationTypes =
implementationAssembly.DefinedTypes.Where(t =>
t.IsClass && !t.IsAbstract && !t.IsGenericType && !t.IsNested);
foreach (var type in implementationTypes)
{
var interfaceTypeName = interfaceAssemblyName + ".I" + type.Name;
var interfaceType = interfaceAssembly.GetType(interfaceTypeName);
services.AddTransient(interfaceType, type);
}
}
如果放在一个项目里怎么循环注册?