所以我使用windsor依赖注入:
container.Register(Component.For<IX>().ImplementedBy<X>().LifestyleSingleton());
我的问题(例如)是在X
类的构造函数中,我不能轻易看到使用了该构造函数。事实上,Visual Studio 告诉我它没有被使用:
这有点烦人 - 很难发现死代码。
你如何解决这个问题?
所以我使用windsor依赖注入:
container.Register(Component.For<IX>().ImplementedBy<X>().LifestyleSingleton());
我的问题(例如)是在X
类的构造函数中,我不能轻易看到使用了该构造函数。事实上,Visual Studio 告诉我它没有被使用:
这有点烦人 - 很难发现死代码。
你如何解决这个问题?
没有什么可以修复的。
容器在解析时调用构造函数来初始化对象。
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
//...
}
其中显式调用用于安排被测对象。