0

3 つの文字列を含む listitem で構成されるリストがあるとします。新しいリストアイテムを追加し、外部ソースから上記の文字列の値を割り当てようとします。

これらの項目のいずれかが割り当てられていない場合、listitem の値は null (未割り当て) のままです。その結果、その値を自分のページのフィールドに割り当てようとするとエラーが発生します。

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

手動で行うことができます:

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

しかし、私はいくつかの大きなリスト項目を持っており、それらのためにそれを書くのは面倒です.

それで、コマンドはありますか、それともリストアイテムをnullではなく空の文字列に初期化する簡単な方法ですか?

または、誰かがより良いアイデアを持っていますか?

4

3 に答える 3

2

外部ソースからクラスの初期化された (適切な値、必要に応じて string.Empty を持つ) インスタンスを返し、コレクションに直接追加します。

   classCollection.Add(GetClassInstanceFromOutsideSource());

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

本質的にクラスの「空の」インスタンスをコレクションに追加し、後で更新する理由を考えることはできません。非効率的で非論理的です。

于 2011-06-29T14:36:22.113 に答える
1

少し手間がかかるかもしれませんが、リフレクションを使用して、すべてのパブリック書き込み可能文字列プロパティをstring.Emptyこのように設定できます

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

ただし、最も効率的なオプションは、プロパティをstring.Emptyに初期化することです。

于 2011-06-29T14:38:24.700 に答える
1

クラスでプロパティを定義するときに、プロパティをデフォルト値(""あなたの場合)で設定できますClaimPwk

例えば

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

次に、インスタンスを作成するClaimPwkと、これらのプロパティがデフォルト値になります""

于 2011-06-29T14:36:18.577 に答える