首页 > 解决方案 > 根据源值数据映射到不同的值

问题描述

我有一个具有多个属性的类,它使用 xml 数据转换为对象。

public class Mapper
{
    [Display(Name="MapName")]
    public string Name { get; set; }

    [Display(Name="MapType")]
    public string Type { get; set; }
}

在我们以 CSV 格式生成数据之前,xml 数据被转换为上述类。

现在,我们要根据数据将某些值映射或转换为其他值。

例如:如果 xml 数据中的 name = "xyz",我们要将其转换为 "a",如果 xml 数据中的 name = "abc",我们要将其转换为 "123"

同样,我们有 10-15 个条件,我们希望在生成 csv 之前更改数据。

有什么好的方法吗?

标签: c#.net

解决方案


一种方法是使用要执行的转换字典在 setter 中对其进行转换:

public class Mapper
{
    private string name;

    [Display(Name = "MapName")]
    public string Name
    {
        get { return name; }
        set
        {
            if (value != name)
            {
                name = nameMap.ContainsKey(value) ? nameMap[value] : value;
            }
        }
    }

    private Dictionary<string, string> nameMap = new Dictionary<string, string>
    {
        {"xyz", "a"},
        {"abc", "123"}
    };

    // Rest of class omitted
}

推荐阅读