【发布时间】:2020-11-30 20:22:02
【问题描述】:
我有一个 asp.net core 3.1 网络应用程序
我有一个 接口,它由 3 个类实现来配置数据库映射。我想在应用程序配置设置期间自动调用该方法。
以下是我的接口及其实现。
public interface IMongoMapper
{
void Configure();
}
class TenantMap : IMongoMapper
{
public void Configure()
{
BsonClassMap.RegisterClassMap<Entities.Tenant>(cm =>
{
cm.AutoMap();
});
}
}
class CourseMap : IMongoMapper
{
public void Configure()
{
BsonClassMap.RegisterClassMap<Course>(cm =>
{
cm.AutoMap();
});
}
}
如何获取所有实现接口并调用Configure的类 方法合适吗?
【问题讨论】:
-
展示如何在应用程序启动中获取这些类的实例
-
除了DI我不知道路。是否可以通过 DI 调用方法?
-
您可以使用反射来获取所有实现该接口的类型,然后使用 Activator.CreateInstance() 并在创建的实例上执行配置方法
-
这些类似乎包含(简单)配置。为什么你需要通过你的DI容器注册和解决它们?我希望这些类在启动时创建和使用,此时您通常没有(也不需要)容器)。
-
您能详细说明为什么此时需要使用反射吗?为什么不能实例化
IMongoMapper实例列表、循环它们并调用它们的Configure方法?
标签: c# asp.net-core .net-core dependency-injection