2016-09-02 5 views
1

У меня есть 2 очень похожих объекта dto. Я показал пример кода ниже, но фактический 2-йто, с которым я работаю, содержит 39 и 40 свойств. Мой вопрос в том, что есть более простой способ скопировать содержимое QuoteDto в Quote2Dto.копировать содержимое dto в другое подобное dto

Я призываю к устаревшему проекту, который дает мне объект QuoteDto. Мне нужно позвонить в новый проект службы отдыха, который принимает объект Quote2Dto

Сообщите мне, если вам нужен еще один код.

public abstract class QuoteDto 
    { 
     public virtual bool IsWaive { get; set; } 
     public virtual bool IsExpired { get; set; } 
    } 

public abstract class Quote2Dto 
    { 
     public virtual bool IsWaive { get; set; } 
     public virtual bool IsExpired { get; set; } 
     public virtual bool IsCancel { get; set; } 
    } 

ответ

1

Обычно Automapper (или аналогичная библиотека) используется. Он может копировать те же свойства без какой-либо предварительной настройки. Но вы всегда можете настроить более сложные сопоставления свойств.

Here you can find Getting Started Guide.

0

У вас есть два варианта здесь.

Ваши первые варианты - использовать AutoMapper для копирования свойств. В AutoMapper есть несколько дополнительных конфигураций, если вам нужна более сложная конфигурация.

Второй вариант заключается в создании способа внутри вашего DTO, который принимает другие DTO и копирует свойства (в основном копирование свойств вручную.)

Это будет выглядеть примерно так:.

class FirstSampleDTO 
{ 
    public int RandomProperty { get; set; } 
    public int RandomProperty2 { get; set; } 
    public int RandomProperty3 { get; set; } 

    private void CopyDTOData(SecondSampleDTO dto) 
    { 
     dto.RandomProperty = this.RandomProperty; 
     dto.RandomProperty2 = this.RandomProperty2; 
     dto.RandomProperty3 = this.RandomProperty3; 
    } 
} 

class SecondSampleDTO 
{ 
    public int RandomProperty { get; set; } 
    public int RandomProperty2 { get; set; } 
    public int RandomProperty3 { get; set; } 

    private void CopyDTOData(FirstSampleDTO dto) 
    { 
     dto.RandomProperty = this.RandomProperty; 
     dto.RandomProperty2 = this.RandomProperty2; 
     dto.RandomProperty3 = this.RandomProperty3; 
    } 

} 

(Это в случае, если у вас уже есть данные dto.)

Я бы предложил использовать второй метод, если вы не собираетесь делать большую часть отображения.