如何将属性从对象映射到具有不同属性名称的另一个对象?
我有一个Product类,如下所示:
public class Product : IEntity { public int Id { get; set; } public string Name { get; set; } }
视图模型看起来像:
public class ProductSpecificationAddviewmodel { public int ProductId { get; set; } public string ProductName { get; set; } }
我需要做以下映射:
Product.Id => ProductSpecificationAddviewmodel.ProductId Product.Name =>ProductSpecificationAddviewmodel.ProductName
这是我的行动方法:
public ActionResult Add(int id) { Product product = productService.GetById(id); // Mapping //ProductSpecificationAddviewmodel viewmodel = new ProductSpecificationAddviewmodel(); //viewmodel.InjectFrom(product); return View(viewmodel); }
我该怎么办?
解决方法
如果您正在使用ValueInjecter,那么您将编写一个ConventionInjection.见第二个样本
here
public class PropToTypeProp : ConventionInjection { protected override bool Match(ConventionInfo c) { return c.TargetProp.Name == c.Source.Type.Name + c.TargetProp.Name; } }
这个注入将从TSource.*的所有属性到TTarget.TSource *,所以你这样做:
vm.InjectFrom<PropToTypeProp>(product);