拥有以下代码块,是否有一种优雅的方式来包装它们以减少代码冗余,例如重复String.IsNullOrWhiteSpace
和检查" 1" 或" 0" 用于映射布尔字段。是否可以先将它们放在字典中,然后再编写一个方法将字典映射到model
属性。这样的事情:Mapping object to dictionary and vice versa
但问题是model
的不同属性具有不同的数据类型
string[] stringValue = data.Split(',');
model.Field1 = String.IsNullOrWhiteSpace(stringValue[4].Trim()) ? 0 : int.Parse(stringValue[4].Trim());
model.Field2 = !String.IsNullOrWhiteSpace(stringValue[5].Trim()) && (stringValue[5].Trim() == "1");
model.Field3 = String.IsNullOrWhiteSpace(stringValue[6].Trim()) ? null : stringValue[6].Trim();
model.Field4 = String.IsNullOrWhiteSpace(stringValue[7].Trim()) ? 0 : int.Parse(stringValue[7].Trim());
model.Field5 = String.IsNullOrWhiteSpace(stringValue[8].Trim()) ? 0 : int.Parse(stringValue[8].Trim());
model.Field6 = String.IsNullOrWhiteSpace(stringValue[9].Trim()) ? 0 : int.Parse(stringValue[9].Trim());
model.Field7 = String.IsNullOrWhiteSpace(stringValue[10].Trim()) ? 0 : int.Parse(stringValue[10].Trim());
model.Field8 = String.IsNullOrWhiteSpace(stringValue[11].Trim()) ? 0 : int.Parse(stringValue[11].Trim());
model.Field9 = String.IsNullOrWhiteSpace(stringValue[12].Trim()) ? 0 : int.Parse(stringValue[12].Trim());
model.Field10 = String.IsNullOrWhiteSpace(stringValue[13].Trim()) ? 0 : int.Parse(stringValue[13].Trim());
model.Field11 = String.IsNullOrWhiteSpace(stringValue[14].Trim()) ? null : stringValue[14].Trim();
model.Field12 = String.IsNullOrWhiteSpace(stringValue[15].Trim()) ? null : stringValue[15].Trim();
model.Field13 = String.IsNullOrWhiteSpace(stringValue[16].Trim()) ? 0 : double.Parse(stringValue[16].Trim());
model.Field14 = String.IsNullOrWhiteSpace(stringValue[17].Trim()) ? 0 : int.Parse(stringValue[17].Trim());
model.Field15 = String.IsNullOrWhiteSpace(stringValue[18].Trim()) ? 0 : double.Parse(stringValue[18].Trim());
model.Field16 = String.IsNullOrWhiteSpace(stringValue[19].Trim()) ? 0 : double.Parse(stringValue[19].Trim());
model.Field17 = String.IsNullOrWhiteSpace(stringValue[20].Trim()) ? null : stringValue[20].Trim();
model.Field18 = String.IsNullOrWhiteSpace(stringValue[21].Trim()) ? 0 : double.Parse(stringValue[21].Trim());
model.Field19 = String.IsNullOrWhiteSpace(stringValue[22].Trim()) ? 0 : double.Parse(stringValue[22].Trim());
答案 0 :(得分:0)
您可以编写一些扩展方法来为您包装,例如:
static class Extensions
{
public static int GetIntValue(this string orig)
{
var trimmed = orig?.GetTrimmedValue();
return trimmed == null ? 0 : int.Parse(trimmed);
}
public static string GetTrimmedValue(this string orig)
{
var trimmed = orig?.Trim();
return string.IsNullOrEmpty(trimmed) ? null : trimmed;
}
}
然后你可以从任何字符串中调用它们:
var x = "1 ";
int y = x.GetIntValue();
var i = "Hi ";
string j = i.GetTrimmedValue();