2016-06-30 12 views
-1

私は1つの共通のプロパティを持つ複数のクラスがあり、そのクラスのコンストラクタでそのプロパティを設定しています。class design - 継承または抽象またはインターフェイス

class Expense1 
{ 
    int _costval; 

    public Expense1(int cost) 
     { 
      _costval = cost; 
     } 

    ///other properties and methods.. 
} 
class Expense2 
{ 
    int _costval; 

    public Expense2(int cost) 
     { 
      _costval = cost; 
     } 

    ///other properties and methods... 
} 
class Expense3 
{ 
    public int _costval; 

    public Expense3(int cost) 
     { 
      _costval = cost; 
     } 

    ///other properties and methods... 
} 

「_costval」にアクセスする必要があります。あらゆるタイプのexpense1またはexpense2またはexpense3のできるオブジェクト

Console.WriteLine(@object._costVal) 

ような何か...

私はそれをどのように行うことができますか?基本抽象クラスを作成してcostvalとコンストラクタをそれに移動する必要がありますか?ご意見をお聞かせください。

+4

パブリックフィールド –

答えて

1

インターフェイスやベースクラスでも同じことができます。しかし、インターフェイスを開発すると、疎結合になり、brittle base classに苦しまないという点で、より優れた設計につながります。そして、あなたが行うことができます

public interface ICostable 
{ 
    int Cost { get; } 
} 

class Expense1 : ICostable 
{ 
    public int Cost { get; } 

    public Expense1(int cost) 
     { 
      Cost = cost; 
     } 

    ///other properties and methods.. 
} 

を::だからcomposition over inheritance

を好む私は(時々)任意のプロパティを参照することはできません

public void PrintCost(ICostable item) 
{ 
    Console.WriteLine(item.Cost); 
} 
+0

意味をなさない。ありがとう – bansi

関連する問題