【发布时间】:2013-08-02 21:34:15
【问题描述】:
这个问题类似于this one。不同之处在于我想要两个基类。
示例:
public class Circle
{
private string _radius { get; set; }
public Circle Radius(string radius)
{
_radius = radius;
return this;
}
}
public class Box
{
private string _width { get; set; }
public Circle Width(string width)
{
_width = width;
return this;
}
}
public class CircleAndBox : Circle, Box // Can't do in c#
{
// should contain methods from both Circle and Box, but return CircleAndBox
}
也许圆形和盒子不是最好的例子。基本上它们代表具有不同属性和方法的类。 CircleAndBox 类恰好具有与 Circle 和 Box 相同的属性和方法。 CircleAndBox 可能具有 Circle 和 Box 中都不存在的其他属性和方法。
期望的结果
我应该会写:
var circle = new Circle().Radius("5");
var box = new Box().Width("6");
var circleAndBox = new CircleAndBox().Radius("5").Width("6");
如果:
当我向Circle 或Box 类添加方法时,我不应该接触CircleAndBox 类。就像从单个类的常规继承一样,CircleAndBox 应该自动继承 Circle 和 Box 的所有公共方法
【问题讨论】:
-
Interfaces interfaces 接口...你需要这两个做什么?什么是圆+框?如果它是一个盒子里的圆圈,那么圆圈的半径是盒子宽度的一半?
-
.Width("6")??那么.Width("BigFat")?? -
new CircleAndBox().Radius("5").Width("6");太这么流利了,我什至不明白这是什么意思。 -
@spender 如果 Radius 返回
CircleAndBox:P (怀疑!) -
CircleAndBox听起来非常违反里氏替换原则。
标签: c# inheritance multiple-inheritance fluent-interface