Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以从C#中的多个类继承属性?_C#_Inheritance_Properties_Multiple Inheritance - Fatal编程技术网

有没有一种方法可以从C#中的多个类继承属性?

有没有一种方法可以从C#中的多个类继承属性?,c#,inheritance,properties,multiple-inheritance,C#,Inheritance,Properties,Multiple Inheritance,可能重复: 在下面的示例中,我希望衬衫自动继承材质和颜料类的属性。这在C#中可能吗 我很难提供一个更好的例子,但这正是我想要做的。我意识到我可以创建接口,但这些接口不会自动继承属性。请看,因为我不想每次创建类似于ShirtC#不允许从多个类继承的类时都手动输入所有这些属性 但是你为什么这样做呢?衬衫可以有两个属性:材质和颜料。当您初始化Shirt实例时可以设置这些属性,就像将其传递到具有这些属性集的构造函数中一样。或者创建一个构造函数,您可以在其中传递某些属性,并在该构造函数中实例化材质和颜料

可能重复:

在下面的示例中,我希望
衬衫
自动继承
材质
颜料
类的属性。这在C#中可能吗

我很难提供一个更好的例子,但这正是我想要做的。我意识到我可以创建接口,但这些接口不会自动继承属性。请看,因为我不想每次创建类似于
Shirt

C#不允许从多个类继承的类时都手动输入所有这些属性


但是你为什么这样做呢?衬衫可以有两个属性:材质和颜料。当您初始化Shirt实例时可以设置这些属性,就像将其传递到具有这些属性集的构造函数中一样。或者创建一个构造函数,您可以在其中传递某些属性,并在该构造函数中实例化材质和颜料。

以dupe结尾,请看这里:之所以这样做,是因为我的场景涉及的属性比您在这个简单示例中看到的要多,来自许多不同的类。此外?在我的真实场景中,将有100多个
Shirt
类,我无法想象为这些类键入所有相同的属性,甚至从一个接口键入。看起来工作太多了。我想也许有更好的方法来弥补我的不足?100件不同等级的衬衫?我只希望Shirt类有1到100个实例。不,不。。。我是说。。。100多个类似于Shirt的类,因为它们需要从其他类继承多个属性。问题是在真实场景中,材质和颜料可能有20个属性。我试图把它分解成最简单的元素。为什么没有人理解这一点?我不想发布300行代码,让你们试着破译它。这是我想做的核心事情。
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;
    }
}