質問

2011-01-19 17 views
0

は現在、私は唯一のプロパティ私の他のクラスでは質問

class MyEntity 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

を持つクラスは、私は

MyEntity objEnt = new MyEntity(); 
objEnt.FirstName="abc"; 
objEnt.LastName = "edf"; 

私が持っている理由のような値を設定するために使用する必要がありクラスMyEntityは、遵守を保証することのみを目的としています。

このアプローチは正しいですか?私は複数のインスタンスを持つことができますMyEntity

これにスタティッククラスを使用できますか?これでGenericsをどのように使うことができますか?

ところで実装はC#であなたが状態を持っているようにあなたは、静的クラスを使用することはできません事前に

おかげ

乾杯、

カルティク

+3

これが正しいかどうかは、達成しようとしていることに完全に依存します。あなたの目標は何ですか? –

+3

あなたはどんなものへの遵守を保証するためのプロパティだけを持つクラスを持っていますか? –

+0

普通のPOCOまたはDTOオブジェクトと同様、これは問題ありません。それ以外の場合は実際のシナリオに依存します –

答えて

1
  • です。静的クラスは、静的メンバーのみで構成できます。
  • それはあなたが不変であることを

は個人的に私はタイプを好むここにジェネリックを使用したいかを確認するのは難しい可能な場合 - 二つのパラメータでMyEntityコンストラクタを与え、およびプロパティから公共のセッターを除去することにより、例えば。 (コンストラクタの外で使用しないプライベートセッタを保持するか、「適切な」読み取り専用フィールドとreadonlyプロパティに移動するかは別の選択です)。しかし、この変更可能なタイプとなる可能性があります。あなたがしようとしていることを知らずに。あなたが変更可能なタイプを使用している間、あなたは、あなたの初期設定を簡単にするために、オブジェクト初期化子を使用することができます

注:

MyEntity objEnt = new MyEntity { FirstName = "abc", LastName = "edf" }; 

(あなたはタイプが不変行った場合、あなたは、コンストラクタに値を渡したいですあなたはC#4の "名前付き引数"機能を使って名前を使用することができます。の場合 C#4を使用しています)。

+0

@Umesh:私のデータベースにデータが入力されていることを確認したい – KK99

+0

@ Karthik K:あなたはデータベースに関連するものは一切表示していないので、あなたはそれを好きになると思っています。そのビットが健全であるかどうかは実際には分かりません。 –

+0

私はdbテーブルを持っていて、私のクラスはこのテーブルにデータを挿入します。私の例では、フィールドはMyEntityクラスのプロパティです。 [テーブル構造は変わらないかもしれません]データベースに複数の行を挿入する必要があるかもしれません。だから私は冷たい場合MyEntityオブジェクトのコレクションを持っていると思っています。 MyEntityクラスに列名を付ける理由は、テーブル構造が固定されているためです。質問は、このアプローチが正しい場合ですか?または私はSTRUCTのために行く必要がありますか?これがまだ曖昧であるかどうかはわかりません。 – KK99

1

すでに説明したように、 静的クラスを使用することはできませんが、複数のインスタンスを持ちたい場合や、複数のスレッドからのアクセス中に同期に問題がある場合があることに注意してください。

ジェネリック医薬品は...ここに必要なものは何ですか?

0

私は半分の型指定された答えを持っていたが、その後、ジョンはその現在の形で私の答えは無意味になった答え....

私もジョンの答えに対位法を提供します。変更可能なオブジェクトを使用する前に慎重に考えてください - いくつかの観点からは良いですが、編集可能なフィールドへのバインディングに使用する場合、またはそれらをシリアル化する場合(ストレージまたは転送、つまりWCF Webサービス呼び出しのいずれか) 。

+0

不変型を編集可能にするのは確かに問題を引き起こしています:)シリアル化では、組み込みシリアライザが難しくなる傾向があります:(プロトコルバッファは、不変型の周りに設計されています... –

0

私が推測しているあなたの不特定のDTOのためのジェネリックスの素早く汚れた使い方です。

class MyEntity<T> 
{ 
    public T value { get; set; } 
} 
+0

2つのプロパティを持つ元のクラスの有効な置換ではありません。これの有用性を見てください。 –