2009-06-10 4 views
1

コンテナクラスの設計について、C#で30個以上の変数が含まれているような人はいませんか?コンテナクラス内の変数の数が多い

私はいくつかの異なる型、例えばstringやDateTimeがありますので、変数のセットとして書いていますが、プロパティを持つオブジェクトの辞書にそれらをすべて格納するほうがいいでしょうキーとしての名前は?

乾杯、

答えて

5

すべてのフィールドが必要な場合は必須です。辞書を使用してのみを追加すると、オーバーヘッドが増え、余分なメモリコストがかかります。ディクショナリアプローチは、プロパティバッグ実装やスパースイベントハンドラなどのいくつかの特定のシナリオで役立ちます(イベントは最も明白なデータであるため)。

フィールドがまばらに使用されている場合(つまり、いくつかのより多くの場合ではない以上が使用されている)、おそらく(関連分野のグループあたり)内部クラスの数に関連するフィールドを押して、 - すなわちの代わりに:

class Foo { 
    string userName; 
    int userId; 

    string orderReference; 
    DateTime orderDate; 

    ... 
} 

何かのように:あなたは、ユーザデータを格納する必要がある場合

class Foo { 
    class UserInfo { // move this outside if it makes sense to re-use it 
      public int Name {get;set;} 
      public int Id {get;set;} 
    } 
    UserInfo user; 

    class OrderInfo { // move this outside if it makes sense to re-use it 
     public string Reference {get;set;} 
     public string Date {get;set;} 
    } 
    OrderInfo order; 
} 

その後、新しいUserInfoを作成します。ユーザーデータが不要な場合は、userはnullのままにしてください。

+0

これはすでに私がすでに運転している実装なので、私の良心を和解してくれてありがとう!しかし、30種類以上の変数がすでにベースクラスにある場合は、RESTを分割します(このビルドは非常識ですが、修正するのは私の仕事ではなく、いくつかの専門製品についてはeBayだと思います)。それぞれ別の15以上の特性を持っています!それを素敵なものにする方法はありませんので、私は複数のプロパティのアプローチを維持するつもりです! –