Пример кода для: Обновление <T>(sourceObject, targetObject, string [] исключения) - PullRequest
1 голос
/ 08 декабря 2010

Мне нужен общий метод обновления, который копирует все свойства sourceObject в targetObject, но не методы, упомянутые в exceptions.

1 Ответ

0 голосов
/ 08 декабря 2010

Вы пробовали использовать 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);
...