Есть ли способ наследовать свойства нескольких классов в C #?

Возможное дублирование:
Множественное наследование в C #

В следующем примере я хочу, чтобы Shirt автоматически наследовал свойства классов Material и Pigment. Возможно ли это вообще на C #?

public class Material
{
    public enum FabricTypes { Cotton, Wool, Polyester, Nylon }
    public FabricTypes Fabric { get; set; }
    public Color Color { get; set; }
}

public class Pigment
{
    public enum PigmentQualities { Fine, Average, Poor }
    public PigmentQualities Quality { get; set; }
    public Color Color { get; set; }
}

public class Shirt : Material //, Pigment
{
    public Shirt()
    {
        Fabric = FabricTypes.Cotton;
        Color = new Color();
        //Quality = PigmentQualities.Fine;
    }
}

Мне сложно представить лучший пример, но по сути это то, что я пытаюсь сделать. Я понимаю, что могу создавать интерфейсы, но они не наследуют свойства автоматически. Видите ли, я не хочу, чтобы мне приходилось вручную вводить все эти свойства каждый раз, когда я создаю класс, похожий на Shirt.


person jedmao    schedule 25.07.2010    source источник
comment
Закрытие как дурацкое, взгляните здесь: stackoverflow.com/questions/178333 / множественное наследование-в-с   -  person Nick Craver    schedule 25.07.2010


Ответы (1)


C # не позволяет наследовать от нескольких классов.

Но почему ты это делаешь так? Вместо этого рубашка может иметь 2 свойства: Материал и Пигмент. Их можно установить, когда вы инициализируете экземпляр Shirt, например, передав его в конструктор с этими свойствами. Или создайте конструктор, в котором вы можете передавать определенные свойства и создавать экземпляры материалов и пигментов в этом конструкторе.

person Kris van der Mast    schedule 25.07.2010
comment
Причина, по которой я это делаю, заключается в том, что мой сценарий включает гораздо больше свойств, чем вы видите в этом простом примере, из многих разных классов. Более того? В моем реальном сценарии будет более 100 Shirt классов, и я не могу представить, чтобы набирать для них все те же свойства или даже из интерфейса. Просто кажется, что работы слишком много. Я подумал, что может быть способ получше - мне чего-то не хватает? - person jedmao; 25.07.2010
comment
100 Рубашек разных классов? Я ожидал бы только 1, но 100 экземпляров класса Shirt. - person Kris van der Mast; 25.07.2010
comment
Нет, нет ... Я имею в виду ... более 100 классов, похожих на Shirt, в том, что они должны наследовать несколько свойств от других классов. - person jedmao; 25.07.2010
comment
Проблема в том, что в реальном сценарии Материал и Пигмент, вероятно, будут иметь внутри 20 свойств. Я пытаюсь здесь разбить его на самые простые элементы. Почему этого никто никогда не понимает? Я не хочу публиковать 300 строк кода, а вы, ребята, пытаетесь его расшифровать. Это главное, что я пытаюсь сделать. - person jedmao; 25.07.2010