使用Simple Injector在静态类中注入属性

时间:2017-09-27 06:36:02

标签: c# dependency-injection simple-injector property-injection

我使用了简单注射器的依赖注入。现在我正在尝试实现属性注入,但help document没有多大帮助。

任何人都能用简单的例子解释属性注入是如何工作的吗?

我想在Web Project的一个Utility类中使用它,而不是在控制器中。那个类方法是静态的。

1 个答案:

答案 0 :(得分:4)

本文档没有解释如何注入静态属性,因为Simple Injector不支持此功能。

静态属性通常是一个坏主意,因为它们会阻碍可测试性,导致Temporal Coupling,并可能导致Captive Dependencies

如果需要静态属性,则必须自己注入依赖项。您可以在对集装箱进行所有注册后立即在Composition Root中执行此操作。

示例:

var container = new Container();

// Make registrations to container here:

container.Verify();

Utility.MyStaticProperty = container.GetInstance<IDependency>();

在正常情况下,Simple Injector会检测到这些类型的Lifestyle Mismatches,但是当您自己注入此属性时,它将无法执行此操作。