如何保证类在C#中实现特定的接口

时间:2013-10-25 14:44:44

标签: c# interface

我想创建一个取决于另一个界面功能的界面。例如,我正在制作:

interface IHealth  {

}

interface IHealthBar {

}

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


更新

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

4 个答案:

答案 0 :(得分:6)

从其他界面派生/扩展,就像这样......

interface IHealthBar : IHealth {

}

作为旁注,您还可以在C#中为interfaces提供多重继承,因此,如果您只想分解界面定义,你可以创建类似......的类。

public class OnlyNeedHealth : IHealth {}
public class NeedHealthAndHealthBar : IHealth, IHealthBar {}

答案 1 :(得分:2)

  

IHealth有健康酒吧,IHealthBar不健康。

好的,然后让IHealth有一个健康栏

interface IHealth  {
    IHealthBar HealthBar {get;}
}

这使得IHealth的任何实现者都具有类型为HealthBar的名为IHealthBar的属性的公共getter,由实现者决定如何处理setter。

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

    public IHealthBar HealthBar {get; private set;}
}

答案 2 :(得分:1)

IHealthBar来自IHealth

public interface IHealth
{
}

public interface IHealthBar : IHealth
{
}

答案 3 :(得分:0)

您可以让界面继承:

interface IHealthBar : IHealth
{
  /// ...
}