.NET 6.0中如何在OData元数据XML的枚举成员名中添加空格
解决方法
要修改OData元数据中枚举成员的名称,需要手动覆盖OData约定生成的枚举成员,通过EnumTypeConfiguration指定每个成员的名称为DescriptionAttribute中的值。
修改GetEdmModel方法如下:
static IEdmModel GetEdmModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Project.Car>("Car"); // 获取枚举类型配置对象 var enumConfig = builder.EnumType<MyEnum>(); // 遍历枚举所有公共静态字段 foreach (var field in typeof(MyEnum).GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)) { // 获取字段上的DescriptionAttribute var descAttr = field.GetCustomAttribute<DescriptionAttribute>(); if (descAttr != null) { // 移除自动生成的成员,添加自定义名称的成员 enumConfig.RemoveMember(field.Name); enumConfig.Member((MyEnum)field.GetValue(null)).Name = descAttr.Description; } } return MetadataMapper(builder.GetEdmModel()); }
说明
- 通过
builder.EnumType<MyEnum>()获取枚举的配置实例EnumTypeConfiguration - 遍历枚举的所有静态公共字段,提取每个字段的
DescriptionAttribute - 若存在描述属性,先移除OData自动生成的成员,再添加以描述文本作为名称的新成员
- 生成的元数据中,枚举成员的
Name字段将显示带空格的描述内容
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

