如何将 Display 属性添加到外部枚举

本文关键字:外部 枚举 添加 属性 Display | 更新日期: 2023-09-27 18:11:48

>我正在对某些只有一定数量的选项的属性使用枚举(例如性别(。我使用 @Html.EnumDropDownListFor(...) 渲染这些枚举,它使用 Display 属性来正确呈现选项(这些值来自资源,因为它们需要可翻译(。

public enum Gender
{
    [Display(Name = "LabelMale", ResourceType = typeof(Translation))]
    Male,
    [Display(Name = "LabelFemale", ResourceType = typeof(Translation))]
    Female
}

但是这些枚举来自无法编辑或无法访问 System.ComponentModel.DataAnnotations 命名空间的外部项目。所以我无法将所需的Display属性添加到这些枚举中的值中。

视图模型

有同样的问题,但对于视图模型,我可以使用 MetadataType(...) 属性。

但是,这不适用于枚举。

是否有类似的解决方案,以便我可以拥有可翻译的枚举?

如何将 Display 属性添加到外部枚举

您可以尝试使用 TypeDesciptor 在运行时添加属性。如果asp.net-mvc框架不使用TypeDescriptor解析这些属性,则从框架读取这些属性时可能会出现一个问题。

但你可以试一试。