[英]how to serialize a class implements two interfaces who have same based interface
[英]What happens if a class implements two interfaces that extend the same base interface?
考虑 C# 中的以下接口:
public interface IUpgradeable
{
public void Upgrade();
}
public interface ISpeedUpgradeable : IUpgradeable
{
public int GetCurrentSpeed();
}
public interface IDamageUpgradeable : IUpgradeable
{
public float GetCurrentDamage();
}
以及实现它们的以下类:
public class SpaceShip : ISpeedUpgradeable, IDamageUpgradeable
{
public int GetCurrentSpeed()
{
return 0;
}
public float GetCurrentDamage()
{
return 0f;
}
public void Upgrade()
{
//Which Upgrade am I implementing? ISpeedUpgradeable? or IDamageUpgradeable?
}
}
由于ISpeedUpgradeable
和IDamageUpgradeable
都扩展IUpgradeable
,它们不应该都有Upgrade()
的实现吗? 还是我误解了接口中的继承是如何工作的?
IUpgradeable
只有一种含义。 多个接口继承它并为自己添加含义的事实不会改变原始接口的含义。 你的类只是实现ISpeedUpgradeable
、 IDamageUpgradeable
和IUpgradeable
:它没有实现IUpgradeable
的特定风格。
Upgrade()
方法应该只意味着它对IUpgradeable
接口的意义。 想想你的商业模式(或者在这种情况下可能是一个游戏模式):是否有一个浮动的项目可以“升级”它接触到的任何可升级的东西? 升级船意味着升级它的速度,或损坏,或两者兼而有之? 如果简单地调用Upgrade
不能提供足够的信息来匹配您的业务模型的工作方式,您可能需要重新考虑您的界面设计。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.