2016-05-30 6 views
1

からオブジェクトを持つ:私はPROP1、PROP2、prop3、prop4を含み、オブジェクト、およびprop5を持っている必要がありのC# - 以下のように私は構造化私の現在のプロジェクトでは3つの異なるクラスを持つ複数のクラス

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

。私は重複の定義をしたくありません。私はは、このような新しいクラスを作成する必要はありません

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を含むオブジェクトを持つ必要があります。"あなたはそれが意味することを説明できますか?あなたの質問から、私はどのクラスのオブジェクトもすべてのプロパティを持つべきだと思った。 –

関連する問題