【发布时间】:2021-06-25 12:40:21
【问题描述】:
我正在从扩展方法类中的某个层转移一些逻辑。问题是我想在具有扩展方法的静态类中使用自动映射器。该项目在.NET Core上运行,我无法在静态类中访问AutoMapper,就像在控制器类中通常我们使用构造函数注入AutoMapper一样,但静态类没有构造函数。
有什么方法可以调用已经在Startup.cs中配置的AutoMapper服务,以任何方式在一个静态类中?
【问题讨论】:
-
静态类确实有构造函数——
static。但是,不建议将它们用于任何可能失败的重要事项,因为几乎不可能自信地预测静态构造函数何时运行,因此错误处理变得非常痛苦。如果你的类依赖于 Automapper,你应该明确说明——公开一个方法来初始化Startup.cs在扩展方法可以使用之前应该调用的东西。如果您真的很友善,请让方法检测到何时未执行此操作以给出合理的错误。 -
您可以考虑使用单例服务而不是静态类,然后您可以在该服务上注入 IMapper 实例。
-
@JeroenMostert 感谢您的洞察力和宝贵意见。
标签: c# .net .net-core automapper