我想创建一个取决于另一个界面功能的界面。例如,我正在制作:
interface IHealth {
}
interface IHealthBar {
}
附加IHealthBar
的实体需要IHealth
作为先决条件。我如何在C#中声明它?
更新
继承不是这里的答案。 Health栏依赖于Health的一条信息,而不是整个实施。 IHealth
有一个健康栏,IHealthBar
不是健康。
答案 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
{
/// ...
}