2011-06-29 56 views
0

假設我有一個由包含三個字符串的listitem組成的列表。我添加一個新的listitem,並嘗試從外部來源分配所述字符串的值。用空格初始化listitem?

如果其中一項未分配,則listitem中的值保留爲空(未分配)。因此,如果我嘗試將該值分配給頁面上的某個字段,則會出現錯誤。

我可以檢查頁面上每個字段的isNullOrEmpty,但這似乎效率低下。我寧願在代碼隱藏中將值初始化爲「」(空字符串)併發送有效數據。

我可以手動做到這一點:

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

但我有一些大的列表項和寫作,對於那些將得到乏味。

那麼有沒有一個命令,或只是簡單的方法來初始化一個listitem空字符串而不是null?

或者有沒有人有更好的主意?

+1

爲什麼不只是從外部源返回一個已初始化(具有正確值)的類實例並將其添加到集合中。 – ChrisBint

回答

1

你可以(在你的情況"")設定默認值您的屬性,當你在你的ClaimPwk類中定義它們

例如

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

那麼當您創建的ClaimPwk一個實例,您將有默認值""

2

返回類的初始化(用正確的價值觀,如果的String.Empty需要),例如來自外部源的特性並將其直接添加到集合中。

classCollection.Add(GetClassInstanceFromOutsideSource()); 

如果你無法從這個外源返回一個實例,寫一個包裝方法來調用它,返回實例,並直接添加到這個集合。

我無法想出任何你想添加的理由,實質上是你的類的'空'實例到集合中,然後更新它。無效且不合邏輯。

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類定義。