C# 字符串值到对象属性的换行映射

C# 字符串值到对象属性的换行映射,c#,string,dictionary,properties,mapping,C#,String,Dictionary,Properties,Mapping,有了以下代码块,是否有一种优雅的方式来包装它们以减少代码冗余,例如重复字符串.IsNullOrWhiteSpace,以及检查布尔字段映射的“1”或“0”。是否可以先将它们放在字典中,然后编写一个方法将字典映射到模型属性。大概是这样的: 但是问题是模型的不同属性具有不同的数据类型 string[] stringValue = data.Split(','); model.Field1 = String.IsNullOrWhiteSpace(stringValue[4].Trim()) ? 0

有了以下代码块,是否有一种优雅的方式来包装它们以减少代码冗余,例如重复
字符串.IsNullOrWhiteSpace
,以及检查布尔字段映射的“1”或“0”。是否可以先将它们放在字典中,然后编写一个方法将字典映射到
模型
属性。大概是这样的: 但是问题是
模型的不同属性
具有不同的数据类型

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

您可以编写一些扩展方法来为您包装内容,例如:

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