如何将属性从对象映射到具有不同属性名称的另一个对象?
我有一个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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。