2

我已经使用简单注入器的依赖注入。现在我正在尝试实施财产注入,但help document没有什么帮助。使用简单注射器进行静态类别的注入

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

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

+0

什么不明确解释?它解释了其他行为的行为,为什么默认情况下没有启用它,以及如何覆盖它。你的课是静态还是你想调用的方法?如果是班级,那么我认为你没有注入的可能性。也许你应该添加它作为你的控制器的构造器注入的一部分? – Icepickle

+0

该方法是静态的。这个类方法直接从Layout中调用,所以没有控制器在图片中。 – Dhwani

+2

这将是很好的更新你的问题,并提供更多的上下文。显示你的用例,显示你想注入依赖的类。描述那个依赖是什么。显示你打算如何使用这个属性。 – Steven

回答

3

该文档没有解释如何注入静态属性,因为这在简单注入器中不受支持。

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

如果需要静态属性,则必须自己注入依赖关系。您可以在Composition Root之后执行此操作,即在您完成对容器的所有注册之后。

例子:

var container = new Container(); 

// Make registrations to container here: 

container.Verify(); 

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

在正常情况下,简单的喷油器将检测这些类型的Lifestyle Mismatches,但不能这样做,当你自己注射此属性。

+0

'如果需要静态属性,则必须自己注入依赖关系。您可以在Composition Root中完成此操作,就在您完成对容器的所有注册之后。“ - 任何相同的示例? – Dhwani

+0

@Dhwani:查看更新 – Steven