2016-05-30 17 views
1

我有三个不同的类别在我目前的项目结构如下目标: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 { 
    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个属性的对象?

+0

'类C2:在C#中的多重继承]的C1' – Plutonix

+1

可能的复制(http://stackoverflow.com/questions/178333/multiple-inheritance-in-c-sharp) –

回答

0

绝对接口,只是要知道,对于理论上的正确性,你会实现的方法,而不是属性,属性是C#中不同的东西。 (链接:Properties in C#

public interface IBaseClass 
{ 
    public string GetProperty1(); 
    public string GetProperty2(); 
    public string GetProperty3(); 
} 

public interface IC1 
{ 
    public string GetProperty4(); 
} 

public interface IC2 
{ 
    public string GetProperty5(); 
} 


public class Implementation : IBaseClass, IC1, IC2 
{ 
    public string GetProperty1() 
    { 
     return "Value"; 
    } 
    public string GetProperty2() 
    { 
     return "Value"; 
    } 
    public string GetProperty3() 
    { 
     return "Value"; 
    } 
    public string GetProperty4() 
    { 
     return "Value"; 
    } 
    public string GetProperty5() 
    { 
     return "Value"; 
    } 


} 

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

0

这会有帮助吗?

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; } 
    } 
+0

谢谢,但没有!在这种情况下,C2有prop4作为成员,我不想要它。我不希望C2能够访问prop4。 – hosjay

+0

你的问题说:“我需要一个包含prop1,prop2,prop3,prop4和prop5的对象;”。你能解释一下你的意思吗?从你的问题中,我认为任何类的对象都应该拥有所有的属性。 –