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" }, _=>{} )
我在将具有属性的简单 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" }, _=>{} )