2011-06-29 5 views
0

3つの文字列を含むlistitemで構成されるリストがあります。私は新しいリスト項目を追加し、上記の文字列の値を外部ソースから割り当てようとします。listitemを空白で初期化しますか?

これらのアイテムのいずれかが割り当て解除されている場合、リストアイテムの値はnull(未割り当て)のままです。その結果、私のページのフィールドにその値を割り当てようとするとエラーになります。

ページの各フィールドでisNullOrEmptyのチェックを行うことはできますが、それは非効率的です。コードビハインドで値を ""(空の文字列)に初期化し、有効なデータを送信したいと思います。

私は手動でそれを行うことができます。

  ClaimPwk emptyNode = new ClaimPwk(); 
      emptyNode.cdeAttachmentControl = ""; 
      emptyNode.cdeRptTransmission = ""; 
      emptyNode.cdeRptType = ""; 
      headerKeys.Add(emptyNode); 

しかし、私はいくつかのBIGリスト項目があり、それらのためにそれを書くことが退屈でしょうが。

コマンドがありますか、nullではなく空の文字列にlistitemを初期化する簡単な方法がありますか?

誰か良いアイデアがありますか?

+1

外部ソースからクラスのインスタンスを(適切な値で)初期化して返し、これをコレクションに追加するだけではどうですか。 – ChrisBint

答えて

1

あなたClaimPwkクラスでそれらを定義したとき、あなたは(あなたのケースで"")デフォルト値を使用してプロパティを設定することができ

例えばあなたがClaimPwkのインスタンスを作成するときに

Public Class ClaimPwk{ 
    public string cdeAttachmentControl = ""; 
    public string cdeRptTransmission = ""; 
    public string cdeRptType = ""; 
} 

あなたはデフォルト値外部ソースから""

2

戻るクラスの初期化(適切な値を持つ、String.Emptyを必要に応じて)インスタンスを使用して、これらのプロパティを持っていますそれをコレクションに直接追加します。

classCollection.Add(GetClassInstanceFromOutsideSource()); 

あなたは、この外部ソースからインスタンスを返すことができない場合は、それを呼び出すインスタンスを返し、コレクションにこれを直接追加するラッパー・メソッドを記述します。

あなたのクラスの「空の」インスタンスがコレクションに追加された後にそれを更新する理由を考えることができません。非効率かつ非合理的。

1

は、ストレッチのビットのだろうが、あなたはこの

emptyNode.GetType() 
     .GetProperties() 
     .Where(p => p.CanWrite && p.PropertyType == typeof(string)).ToList() 
     .ForEach(p => p.SetValue(emptyNode, string.Empty, null)); 

ようstring.Emptyにすべての公共書き込み可能な文字列プロパティを設定するためにリフレクションを使用することができますが、最も効率的なオプションがString.Emptyの中にプロパティを初期化するだろうクラス定義

関連する問題