C#-具有来自多个类的对象

C#-具有来自多个类的对象,c#,C#,在我当前的项目中,我有三个不同的课程,结构如下: class BaseClass { public string prop1; public string prop2; public string prop3; } class C1 : BaseClass { public string prop3; // Common with class C2 public string prop4; } class C2 : BaseClass { pu

在我当前的项目中,我有三个不同的课程,结构如下:

class BaseClass {
    public string prop1;
    public string prop2;
    public string prop3;
}
class C1 : BaseClass {
    public string prop3;   // Common with class C2
    public string prop4;
}
class C2 : BaseClass {
    public string prop3;   // Common with class C1
    public string prop5;
}
我需要有一个对象,它包括prop1、prop2、prop3、prop4和prop5;但我不想有一个重复的定义。我不想创建这样的新类:

class NewClass {
    public string prop1;
    public string prop2;
    public string prop3;
    public string prop4;
    public string prop5;
}

有没有一种方法(如接口、抽象类或其他)可以将我的旧类重构成一个对象,这样我就可以拥有一个具有所有5个属性的对象,而无需定义一个新类?

当然是接口,请注意,从理论正确性的角度来看,您将实现方法,而不是属性,属性在C#中是不同的。(链接:)


这样做的好处是,实现类被迫定义这样的方法

当然是接口,只是要注意,从理论正确性的角度来看,您将实现方法,而不是属性,属性在C#中是不同的。(链接:)

这样做的好处是,实现类被迫定义这样的方法

这有帮助吗

    class BaseClass
    {
        public virtual string prop1 { get; set; }
        public virtual string prop2 { get; set; }
        public virtual string prop3 { get; set; }
        public virtual string prop4 { get; set; }
        public virtual string prop5 { get; set; }
    }
    class C1 : BaseClass
    {
        public override string prop4 { get; set; }
    }

    class C2 : BaseClass
    {
        public override string prop5 { get; set; }
    }
这有用吗

    class BaseClass
    {
        public virtual string prop1 { get; set; }
        public virtual string prop2 { get; set; }
        public virtual string prop3 { get; set; }
        public virtual string prop4 { get; set; }
        public virtual string prop5 { get; set; }
    }
    class C1 : BaseClass
    {
        public override string prop4 { get; set; }
    }

    class C2 : BaseClass
    {
        public override string prop5 { get; set; }
    }

可能重复的可能重复的感谢,但没有!在这种情况下,C2有prop4作为成员,我不想要它。我不想C2访问prop4。你的问题是“我需要一个包含prop1、prop2、prop3、prop4和prop5的对象;”。你能解释一下你的意思吗?从你的问题来看,我认为任何类的对象都应该具有所有属性。谢谢,但不!在这种情况下,C2有prop4作为成员,我不想要它。我不想C2访问prop4。你的问题是“我需要一个包含prop1、prop2、prop3、prop4和prop5的对象;”。你能解释一下你的意思吗?根据你的问题,我认为任何类的对象都应该具有所有属性。