Инициализировать listitem пробелами?

Скажем, у меня есть список, состоящий из listitem, который содержит три строки. Я добавляю новый элемент списка и пытаюсь присвоить значения указанных строк из внешнего источника.

Если один из этих элементов не назначен, значение в элементе списка остается нулевым (неназначенным). В результате я получаю сообщение об ошибке, если пытаюсь присвоить это значение полю на моей странице.

Я могу проверить isNullOrEmpty для каждого поля на странице, но это кажется неэффективным. Я бы предпочел инициализировать значения "" (пустая строка) в отделенном коде и отправить действительные данные.

Я могу сделать это вручную:

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

Но у меня есть несколько БОЛЬШИХ элементов списка, и писать их для них будет утомительно.

Итак, есть ли команда или просто более простой способ инициализировать элемент списка пустой строкой, а не нулевой?

Или у кого-то есть идея получше?


person VBartilucci    schedule 29.06.2011    source источник
comment
почему бы просто не вернуть инициализированный (с правильными значениями) экземпляр класса из внешнего источника и добавить его в коллекцию.   -  person ChrisBint    schedule 29.06.2011


Ответы (3)


Верните инициализированный (с правильными значениями, string.Empty, если требуется) экземпляр класса из внешнего источника и добавьте его непосредственно в коллекцию.

   classCollection.Add(GetClassInstanceFromOutsideSource());

Если вы не можете вернуть экземпляр из этого внешнего источника, напишите метод-оболочку для его вызова, возврата экземпляра и добавления его непосредственно в коллекцию.

Я не могу придумать ни одной причины, по которой вы хотели бы добавить то, что по сути является «пустым» экземпляром вашего класса в коллекцию, а затем обновить его. Неэффективно и нелогично.

person ChrisBint    schedule 29.06.2011

вы можете установить свои свойства со значением по умолчанию ("" в вашем случае), когда вы определили их в своем ClaimPwk классе

e.g.

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

затем, когда вы создадите экземпляр ClaimPwk, у вас будут эти свойства со значением по умолчанию ""

person Bolu    schedule 29.06.2011

Это может быть немного натянуто, но вы можете использовать отражение, чтобы установить для всех общедоступных записываемых строковых свойств значение string.Empty, как это

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

Но наиболее эффективным вариантом было бы инициализировать свойства как string.Empty в определении класса.

person Bala R    schedule 29.06.2011