Инициализировать список с пробелами? - PullRequest
0 голосов
/ 29 июня 2011

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

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

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

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

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

   classCollection.Add(GetClassInstanceFromOutsideSource());

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

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

1 голос
/ 29 июня 2011

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

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

Но наиболее эффективным вариантом будет инициализация свойств в строку. Пусто в определении класса.

1 голос
/ 29 июня 2011

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

, например

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...