2016-09-02 19 views
1

私は2つの非常によく似たオブジェクトを持っています。私は以下のサンプルコードを示しましたが、私が実際に働いている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

あなたはここに2つのオプションがあります。

最初のオプションは、AutoMapperを使用してプロパティをコピーすることです。より高度な設定が必要な場合は、AutoMapperにいくつかの高度な設定があります。

2番目のオプションは、他の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; 
    } 

} 

マッピングの多くをやっていない場合は、2番目の方法をお勧めします。