减少此代码的更简单方法
本文关键字:更简单 方法 代码 | 更新日期: 2023-09-27 18:22:31
我有以下代码
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
属性的数据类型,但假设它是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);
...
这就是你要找的吗?
在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)
尝试以下操作:
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);
}
}
但未经测试。。。。