Този въпрос е подобен на този . Разликата е, че бих искал да имам два базови класа.
Пример:
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
}
Може би Circle and Box не беше най-добрият пример. По принцип те представляват класове с различни свойства и методи. Класът 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
.Width("6")
?? а какво да кажем за.Width("BigFat")
?? - person Federico Berasategui   schedule 03.08.2013new CircleAndBox().Radius("5").Width("6");
Това е толкова свободно, че дори не разбирам какво има предвид. - person spender   schedule 03.08.2013CircleAndBox
:P (съмнявам се!) - person Sayse   schedule 03.08.2013Box : Shape
иCircle : Shape
с общи методи вShape
? - person Sayse   schedule 03.08.2013CircleAndBox
звучи като фантастично нарушение на принципа за заместване на Лисков. - person David   schedule 03.08.2013Circle
иBox
не бяха най-добрият пример. По принцип те представляват класове с различни свойства и методи. КласCircleAndBox
просто има същите свойства и методи катоCircle
иBox
.CircleAndBox
може да има допълнителни свойства и методи, които не съществуват нито вCircle
, нито вBox
. Ще добавя това в описанието на въпроса - person Dmitry Efimenko   schedule 03.08.2013