Automapper 从属性映射到 类

Automapper map from properties to classes

我在将具有属性的简单 class 转换为具有属性的 class 时遇到问题,这些属性本身也称为 ProductDataField

 public class ProductDataField
    {
      
        public string Value { get; set; }

        public string Name{ get; set; }
    }

来源:

     public class ProductDetailsViewModel 
     {
        public CultureInfo Language { get; set; }

        public string SeoTitle { get; set; }

        public string SeoDescription { get; set; }

        public string SeoKeywords { get; set; }

        public string ProductFamily { get; set; }
     }

目的地:

    public class DetailsComplexViewModel 
    {
        public ProductDataField Language { get; set; }

        public ProductDataField SeoTitle { get; set; }

        public ProductDataField SeoDescription { get; set; }

        public ProductDataField SeoKeywords { get; set; }

        public ProductDataField ProductFamily { get; set; }
   }

我正在尝试将 ProductDataField 中的“名称”属性 映射到“ProductDetailsViewModel”中的 属性 名称,并将“值”属性 映射到 属性.

我已经尝试使用 CreateMap 映射它们,但我总是收到类似

的错误

“表达式 'x => x.ProductFamily.Value' 必须解析为顶级成员,而不是任何子对象的属性”

如有任何帮助,我们将不胜感激

这并不是 AM 的真正用途,也许只使用反射会更好,但它可以做到:)

CreateMap<object, ProductDataField>().ConvertUsing((s,_, c)=>new ProductDataField { Value = s as string, Name = (string) c.Items["member"] });
CreateMap<ProductDetailsViewModel, DetailsComplexViewModel>().ForAllMembers(o=>o.PreCondition((ResolutionContext c)=>(c.Items["member"] = o.DestinationMember.Name) != null));

并且 Map 调用:

Map<DetailsComplexViewModel>(new ProductDetailsViewModel { SeoTitle = "title", SeoDescription = "descr" }, _=>{} )