Вы пробовали использовать AutoMapper
? Это позволяет вам определять пользовательское сопоставление, а также автоматическое сопоставление.
- изменить -
Пример:
Даны следующие типы:
public class Type1
{
public int MyProperty1 { get; set; }
public int MyProperty2 { get; set; }
public int MyProperty3 { get; set; }
public int MyProperty4 { get; set; }
public int MyProperty5 { get; set; }
}
public class Type2
{
public int MyProperty1 { get; set; }
public int MyProperty2 { get; set; }
public int MyProperty3 { get; set; }
public int MyProperty7 { get; set; }
public int MyProperty8 { get; set; }
}
Чтобы создать карту, которая игнорирует 2 свойства (MyProperty7 и MyProperty8):
var map = Mapper.CreateMap<Type1, Type2>().
ForMember(dest => dest.MyProperty7, opt => opt.Ignore()).
ForMember(dest => dest.MyProperty8, opt => opt.Ignore());
Наконец, копия:
Type2 type2Variable = Mapper.Map<Type1, Type2>(type1Variable);
- edit2 -
Пример отображения тех же типов:
var map = Mapper.CreateMap<Type1, Type1>().
ForMember(dest => dest.MyProperty4, opt => opt.Ignore()).
ForMember(dest => dest.MyProperty5, opt => opt.Ignore());
использование:
Type1 anotherType1Variable = Mapper.Map<Type1, Type1>(type1Variable);