【发布时间】:2017-09-27 11:35:46
【问题描述】:
我想在一个子包中重新定义一个包的类,同时保持层次结构。
我本来想做这样的事情:
namespace RPG {
public class Actor {}
public class Character : Actor {}
}
public class Actor : RPG.Actor {}
//kind of a diamond problem
public class Character : Actor, RPG.Character {}
我知道这是不正确的; C#不支持多重继承,但我不知道解决这种重定义的最佳方法。
接口不能解决我的问题。我可以使用组合来做类似的事情:
public class Character : Actor {
private RPG.Character basis;
// and do this for each attribute and method
public int atk { get { return basis.atk } set { basis.atk = value; } }
}
但看起来不太好。而且,我用这种方式遇到了另一个问题
namespace RPG {
public class Actor {
public List<Stat> stats { get; set; }
}
public class Stat {}
}
public class Actor {
private RPG.Actor basis;
//I can't do that because Stat does not inherit from RPG.Stat
public override List<RPG.Stat> stats { get; set; }
}
public class Stat {
private RPG.Stat basis;
}
解决我的问题的最佳方法是什么?
【问题讨论】:
标签: c# inheritance namespaces package