3

所以我使用windsor依赖注入:

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

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

0 篇参考文献

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

你如何解决这个问题?

4

1 回答 1

4

没有什么可以修复的。

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

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
    //...
}

其中显式调用用于安排被测对象。

于 2020-06-23T10:24:15.457 回答