【发布时间】:2016-01-09 21:10:26
【问题描述】:
我已将我的 .NET 4.5 转换为 .NET 5,一切似乎都与 DI 有关,这很棒。
为了加载我所有的 AutoMapper 配置文件,我想我会为它们创建一个接口,然后我需要执行该方法,我就是这样做的。
// interface
public interface IAutoMapperMapping
{
void Apply();
}
// class that implements interface
public class PageMapping : IAutoMapperMapping
{
public void Apply()
{
// mappaing config here
}
}
// load all classes
public void ConfigureServices(IServiceCollection services)
{
// Load all mappings files and apply
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var types = assembly.GetTypes()
.Where(e => typeof(IAutoMapperMapping).IsAssignableFrom(e) && !e.IsInterface)
.ToList();
foreach (var type in types)
{
var instance = (IAutoMapperMapping)Activator.CreateInstance(type);
instance.Apply();
}
}
这是在 .NET 5 或一般的 .NET 中执行此操作的最佳方法,还是我做了应该避免的坏事?
【问题讨论】:
-
您有什么顾虑?您是否担心某个特定的部分?
-
我不知道是否有我真正应该使用的功能,或者是否由于 .NET 对 DI 的影响很大,我是否应该使用另一种“DI”方式,而不是使用 CreateInstance
-
不。新的 DI 系统中没有批量注册功能,因此您必须手动编码。
标签: c# asp.net .net dependency-injection asp.net-core