-2

我想制作一个依赖于另一个接口功能的接口。例如,我正在制作:

interface IHealth  {

}

interface IHealthBar {

}

附加的实体IHealthBar将需要一个IHealth作为先决条件。我如何在 C# 中声明它?


更新

继承不是这里的答案。健康栏依赖于来自健康的一条信息,而不是整个实现。IHealth有一个健康栏,IHealthBar不是一个健康。

4

4 回答 4

6

从另一个接口派生/扩展,就像这样......

interface IHealthBar : IHealth {

}

作为旁注,您还可以在 C# 中进行多重继承interfaces,因此,如果您只想分解接口定义,您可以创建执行类似...的类的类。

public class OnlyNeedHealth : IHealth {}
public class NeedHealthAndHealthBar : IHealth, IHealthBar {}
于 2013-10-25T14:45:32.417 回答
2

IHealth 有一个健康栏,IHealthBar 不是一个健康。

好的,那就做IHealth一个健康吧

interface IHealth  {
    IHealthBar HealthBar {get;}
}

这使得任何实现者IHealth都拥有一个名为HealthBartype的属性的公共 getter IHealthBar,这取决于实现者如何处理 setter。

public class Monster : IHealth
{
    public Monster()
    {
        HealthBar = new MonserHealthBar();
    }

    public IHealthBar HealthBar {get; private set;}
}
于 2013-10-25T15:50:51.157 回答
1

IHealthBar派生IHealth自:

public interface IHealth
{
}

public interface IHealthBar : IHealth
{
}
于 2013-10-25T14:45:41.720 回答
0

您可以让接口相互继承:

interface IHealthBar : IHealth
{
  /// ...
}
于 2013-10-25T14:46:29.990 回答