我已经编写了以下代码,我正在寻找改进它。使用 Unity DI,我需要注册具体的类以及它们实现的接口。该方法的优点是无需在添加新类时继续注册。
我已将代码减少到
IUnityContainer 容器 = 新 UnityContainer();
// 从
// 工厂
// container.RegisterType();
// 服务
// container.RegisterType();
// container.RegisterType();
//......
// 至
var 程序集 = AppDomain.CurrentDomain.GetAssemblies()
.Where(x => x.GetName().Name.Contains("Romabravo.ApplicationManager"));
foreach(程序集中的 var 程序集)
{
var types = assembly.GetExportedTypes();
foreach(在类型中键入 t)
{
var interfaces = t.GetInterfaces().Where(x => x.FullName != null &&
x.FullName.Contains("Romabravo.ApplicationManager")).ToList();
foreach(接口中的变量项)
{
var interfaceImplementers = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => item.GetTypeInfo().IsAssignableFrom(p) &&
item.FullName.Contains("Romabravo.ApplicationManager"))
.Select(x => x).Where(x => !x.IsInterface && !x.IsAbstract).ToList();
if (interfaceImplementers != null)
{
foreach(interfaceImplementers 中的 var 实现者)
{
container.RegisterType(项目,实施者);
}
}
}
}
}
返回容器;
只是在寻找一种进一步优化它的方法。