如何在不使用LINQ表达式的情况下映射两个类型及其属性?我有源和目标类型以及源和目标属性的名称。
结果发现很简单。
var sourceType = typeof(SourceType);
var targetType = typeof(TargetType);
var cfg = new MapperConfiguration(x =>
{
var map = x.CreateMap(sourceType, targetType);
map.ForMember("TargetProperty", dest =>
{
dest.MapFrom("SourceProperty");
});
});
var mapper = new Mapper(cfg);
var a = new SourceType { SourceProperty = "Test" };
var b = new TargetType();
mapper.Map(a, b);
很明显的方法
public static TargetType ToTarget(this SourceType source)
{
return new TargetType
{
TargetProperty1 = source.SourceProperty1,
TargetProperty2 = source.SourceProperty2,
TargetProperty3 = source.SourceProperty3
};
}
// Usage
var target = source.ToTarget();
不涉及LINQ表达式;)