代码之家  ›  专栏  ›  技术社区  ›  Eric J.

项目枚举显示名称

  •  0
  • Eric J.  · 技术社区  · 5 年前

    考虑到这些类型

    public enum Foo
    {
        [Display("The bar")]
        Bar
    }
    
    public class Widget
    {
        public Foo MyProperty { get; set; }
    }
    
    public class WidgetDTO
    {
        public string MyPropertyDisplayAttribute { get; set; }
    }
    

    如何使用 Automapper ProjectTo() ? 假设扩展方法 GetDisplayName() 获取显示属性的值。此代码:

    .ForMember(dest => dest.MyPropertyDisplayAttribute, 
               opts => opts.MapFrom(src => src.MyProperty.GetDisplayName()))
    

    正如所料:

    系统NotSupportedException:“LINQ to Entities无法识别该方法”系统。字符串GetDisplayName(System.Enum)'方法,并且无法将此方法转换为存储表达式。'

    我当然可以在映射DTO并更新其属性后对其进行迭代,但我正在寻找一种不需要额外步骤的解决方案。

    0 回复  |  直到 5 年前
    推荐文章