接口聚合

Interface aggregation

我需要实施这个方案。但我面临警告

S3459: "Unassigned members should be removed".

这是教程代码:

private readonly IEngine engine; *S3459*

public void SomeMethod(int params)
{
    this.engine.StartEngine(params);
}

还有计划。

问题:我到底做错了什么?

您的代码:

private readonly IEngine engine;

期望在声明或构造函数中初始化一个 engine,因为字段是 readonly。这就是您收到警告的原因

而且IEngine是一个interface。接口不能自动实例化,因为它只是一个契约。您必须使用实现此接口的 class 实例初始化 engine

这里是一个改进的 UML 模型,其中一些 comments/code 解释了它是如何工作的: