Magicodes.IE值映射功能详解:枚举和布尔类型的智能转换
Magicodes.IE值映射功能详解:枚举和布尔类型的智能转换
【免费下载链接】Magicodes.IEImport and export general library, support Dto import and export, template export, fancy export and dynamic export, support Excel, Csv, Word, Pdf and Html.项目地址: https://gitcode.com/gh_mirrors/ma/Magicodes.IE
Magicodes.IE是一款功能强大的导入导出通用库,支持Dto导入导出、模板导出、花式导出和动态导出,涵盖Excel、Csv、Word、Pdf和Html等多种格式。其中值映射功能为枚举和布尔类型的转换提供了灵活高效的解决方案,让数据处理更加智能便捷。
什么是值映射?
值映射是Magicodes.IE的核心功能之一,它允许开发者在数据导入导出过程中,将枚举或布尔类型的值与特定文本进行双向转换。这一功能极大地提升了数据的可读性和易用性,尤其在处理用户友好的Excel报表或表单时表现突出。
Magicodes.IE提供了两种主要的映射方式:ValueMappingAttribute和ValueMappingsBaseAttribute。前者适用于简单的键值对映射,后者则通过继承抽象类实现更复杂的映射逻辑。
ValueMappingAttribute:简单高效的键值对映射
ValueMappingAttribute是Magicodes.IE中最常用的值映射方式,它通过特性的形式直接应用在实体类的属性上,实现值与文本的一一对应。
基本用法
以下是ValueMappingAttribute的定义:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)] public class ValueMappingAttribute : Attribute { public ValueMappingAttribute(string text, object value) { Text = text; Value = value; } public string Text { get; } public object Value { get; } }枚举类型映射示例
假设我们有一个表示订单状态的枚举:
public enum OrderStatus { [ValueMapping("待付款", 0)] PendingPayment, [ValueMapping("已付款", 1)] Paid, [ValueMapping("已发货", 2)] Shipped, [ValueMapping("已完成", 3)] Completed, [ValueMapping("已取消", 4)] Cancelled }在导出数据时,Magicodes.IE会自动将枚举值转换为对应的文本,如将OrderStatus.Paid显示为"已付款"。同样,导入时也能将文本"已发货"正确转换为OrderStatus.Shipped。
ValueMappingsBaseAttribute:灵活强大的自定义映射
对于更复杂的映射需求,Magicodes.IE提供了ValueMappingsBaseAttribute抽象类。通过继承此类并实现GetMappings方法,开发者可以实现任意复杂的映射逻辑。
基本用法
ValueMappingsBaseAttribute的定义如下:
public abstract class ValueMappingsBaseAttribute : Attribute { public abstract Dictionary<string, object> GetMappings(PropertyInfo propertyInfo); }布尔类型映射示例
下面是一个将布尔值映射为"是"/"否"的自定义特性:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)] public class BoolLocal337Attribute : ValueMappingsBaseAttribute { public override Dictionary<string, object> GetMappings(PropertyInfo propertyInfo) { var res = new Dictionary<string, object>(); res.Add("是", true); res.Add("否", false); return res; } }应用到实体类:
public class Student { [ExporterHeader(DisplayName = "姓名")] public string Name { get; set; } [ExporterHeader(DisplayName = "是否校友")] [BoolLocal337] public bool? IsAlumni { get; set; } }这样,在导出Excel时,IsAlumni属性的true值会显示为"是",false值显示为"否",null值则保持为空。
数据验证与值映射的结合
值映射功能常与数据验证结合使用,确保导入的数据符合预期。Magicodes.IE提供了强大的数据验证机制,当导入的数据不符合映射规则时,会自动弹出错误提示。
上图展示了学号字段超出最大限制时的错误提示。类似地,当年龄不在指定范围内时,也会触发相应的验证错误:
这些验证机制与值映射功能无缝集成,共同确保数据的准确性和一致性。
实际应用场景
值映射功能在实际项目中有广泛的应用,例如:
- 状态转换:将订单、用户等实体的状态枚举值转换为易读的文本。
- 性别转换:将"男"/"女"等文本与布尔值或枚举值相互转换。
- 权限转换:将权限标识与对应的权限名称进行映射。
- 多语言支持:通过自定义映射实现不同语言间的文本转换。
总结
Magicodes.IE的值映射功能为枚举和布尔类型的转换提供了简单而强大的解决方案。无论是简单的键值对映射,还是复杂的自定义映射逻辑,都能轻松实现。这一功能不仅提高了数据的可读性,也大大简化了数据导入导出的处理流程。
如果你正在寻找一个高效、灵活的导入导出库,不妨试试Magicodes.IE。通过以下命令即可获取源码:
git clone https://gitcode.com/gh_mirrors/ma/Magicodes.IE探索更多功能,让数据处理变得更加简单高效!
【免费下载链接】Magicodes.IEImport and export general library, support Dto import and export, template export, fancy export and dynamic export, support Excel, Csv, Word, Pdf and Html.项目地址: https://gitcode.com/gh_mirrors/ma/Magicodes.IE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
