c# - 根据源值数据映射到不同的值
问题描述
我有一个具有多个属性的类,它使用 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 之前更改数据。
有什么好的方法吗?
解决方案
一种方法是使用要执行的转换字典在 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
}
推荐阅读
- css - 如何在弹性框中添加元素之间的空间
- java - 使用 ServletFileUpload 上传图像会在本地环境和 aws 环境中提供两种不同的文件大小
- android - 无法使用“建议快捷方式 In-App Promo SDK”打开快捷方式 Intent
- reactjs - 使用在 Windows 上的 Linux/Mac 上开发的 ReactJS
- javascript - 为什么路径变量会丢失字符?
- ios - 登录后如何显示用户的名字?
- linux - 为什么proc_read()是Linux中与/proc相关的函数,被“反复”调用,直到返回0?
- javascript - 尽管重新启动浏览器,ember-simple-auth 用户仍保持登录状态
- reactjs - VSCode - 更新文件名更改的导入路径?
- javascript - Vuetify - 观察 v-app-bar 的变化,例如 onScroll()