繁体   English   中英

更简单的方法来减少此代码

[英]Easier way to reduce this code

我有以下代码

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);
}

如何在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)

我们不知道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);
...

这就是你要找的东西吗?

尝试类似的东西:

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);
    }

}

虽未测试....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM