gpt4 book ai didi

c# - 从多个类继承的解决方法?

转载 作者:行者123 更新时间:2023-11-30 13:38:25 24 4
gpt4 key购买 nike

所以我正在开发一个 GUI 库,我有 3 个类:UIElement,每个 UI 对象的基础,UIContainer,它实现了容纳其他子元素的可能性,以及 UIRect,它实现了元素的位置和大小。现在我想创建一个同时使用 UIRect 和 UIContainer 的类。显然这样是不可能的,但是这个问题有什么优雅的解决方案吗?

最佳答案

这是一种可能性:继承其中一个类(例如,UIRect),并嵌入另一个(例如,UIContainer)。实现 IUIContainer 接口(interface),将所有调用转发给嵌入对象。

class UIRect {
...
}
interface IUIContainer {
IEnumerable<IUIElement> AllElements {get;}
void AddElement(IUIElement toAdd);
}
class UIContainer : IUIContainer {
public IEnumerable<IUIElement> AllElements {
get {
...
}
}
public void AddElement(IUIElement toAdd) {
...
}
}
class Multiple : UIRect, IUIContainer {
private readonly IUIContainer _cont = new UIContainer();
...
public IEnumerable<IUIElement> AllElements {
get {
return _cont.AllElements;
}
}
public void AddElement(IUIElement toAdd) {
_cont.AddElement(toAdd);
}
}

另一种可能性是使用两个接口(interface),并通过扩展方法共享实现。

关于c# - 从多个类继承的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com