2

我使用了来自简单注入器的依赖注入。现在我正在尝试实现属性注入,但帮助文档并没有多大帮助。

谁能用简单的例子解释一下属性注入是如何工作的?

我想在 Web 项目的一个实用程序类中使用它,而不是在控制器中。并且该类方法是静态的。

4

1 回答 1

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,但是当您自己注入此属性时,它将无法做到这一点。

于 2017-09-27T07:02:49.223 回答