gpt4 book ai didi

c# - 依赖注入(inject)和未使用的构造函数

转载 作者:行者123 更新时间:2023-12-05 02:52:41 28 4
gpt4 key购买 nike

所以我使用windsor依赖注入(inject):

container.Register(Component.For<IX>().ImplementedBy<X>().LifestyleSingleton());

我的问题(事实上)是在 X 类的构造函数中,我无法轻易看出使用了该构造函数。事实上,Visual Studio 告诉我它没有被使用:

0 references

这有点烦人——很难发现死代码。

你如何解决这个问题?

最佳答案

没有什么要解决的。

容器在解析对象时调用构造函数来初始化对象。

IX x = container.Resolve<IX>();

因此 Visual Studio 不会从代码中看到对该构造函数的任何显式调用。

理想情况下,目标类应该只有一个构造函数,遵循显式依赖原则。

public class X : IX {
private readonly IDependency dependency;

public X(IDependency dependency) {
this.dependency = dependency;

//...
}

//...
}

这将确保单独的构造函数是容器在解析类时使用的构造函数。

如果一个人正在积极测试他们的代码或正在遵循 TDD,那么应该在支持测试中引用所用代码。

[TestMethod]
public void X_Should_Do_Something() {
// Arrange

//...

IX subject = new X(...);

// Act
var result = subject.SomeMember();

// Assert
//...
}

使用显式调用来安排被测对象。

关于c# - 依赖注入(inject)和未使用的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62530723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com