Более простой способ уменьшить этот код - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть следующий код

SetField("TextField1", ( item.FirstName == null || item.FirstName[0] == null)
                      ? ""  : item.FirstName[0].Value);
SetField("TextField2", ( item.MiddleName == null || item.MiddleName[0] == null)
                     ? "" : item.MiddleName[0].Value);
SetField("TextField3", ( item.LastName == null || item.LastName[0] == null)
                     ? "" : item.LastName[0].Value);
................
like this 50-60 lines  

Можно ли написать функцию и передать параметры для уменьшения этого кода

(скажем, например)

void Helper(string fieldName, somethinghere )
{
   SetField(fieldName,usesomethinghere);
}

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Мы не знаем тип данных свойств item, но при условии, что это T, если вы определите (перегрузка):

void SetField(string fieldName, T[] itemProperty)
{
    SetField(fieldName,
        itemProperty == null || itemProperty[0] == null ? "" : itemProperty[0].Value);
}

тогда ваши 50-60 строк могут быть уменьшены до:

SetField("TextField1", item.FirstName);
SetField("TextField2", item.MiddleName);
SetField("TextField3", item.LastName);
...

Это то, что вы ищете?

1 голос
/ 06 февраля 2012

А как насчет создания нового свойства только для чтения в классе Item?

Что-то вроде:

public String FirstName_for_display {
    get {
        if(FirstName == null || FirstName[0] == null)
            return "";
        return FirstName[0].Value;
    }
}

И назвал ваш SetField что-то вроде:

SetField("TextField1", item.FirstName_for_display)
0 голосов
/ 06 февраля 2012

попробуйте что-то вроде:

Private void fieldsSetter(string[] fieldnames, object[] items)
{

    for(int s=0; s<fieldnames.Count(); s++)
    {
        SetField(fieldnames[s], (((item)items).FirstName == null || ((item)items).FirstName[0] == null) ? ""  : ((item)items).FirstName[0].Value);
    }

}

не проверено, хотя ....

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