自动映射器从属性映射到类



我有一个问题,从转换一个简单的类与属性类也类本身称为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"中的属性名。和"value";属性设置为属性的值。

我试过用CreateMap映射它们,但我总是得到像

这样的错误"Expression 'x =>x.ProductFamily。值必须解析为顶级成员,而不是任何子对象的属性

如有任何帮助,不胜感激

这并不是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" }, _=>{} )

相关内容

  • 没有找到相关文章

最新更新