2011-06-30 6 views
0

2つの子クラスのいずれかからプロパティをプロジェクト/マップできるようにしたいと思います。 2つの子クラスを持つ親クラスを想像してください。どちらか1つは子クラスを指しています。各子クラスは、モデルクラスのプロパティにマップする必要があります。AutoMapperを使用するクラスのすべてのプロパティにわたる条件付きプロジェクト

ただし、子クラス1がnullの場合、クラス2のプロパティをマップする必要があるモデルにマップしないでください。

全体のプロパティのクラスではなく、1つのプロパティを渡ってそれをやる以外それは私がここで何をしたいようだ:

Conditonal projection

私は各クラスのCustomResolverを作成する必要はありません期待していましたこれを達成するためのより良い方法があるかどうかを判断する必要があります。子クラスにそれぞれ10個の同一のプロパティがあると仮定し、すべての子クラスが移入されることに応じてマップを切り替えるだけです。

public class Message 
{ 
    public string Comment { get; set; } 
    public Inbound? InboundMessage { get; set; } 
    public Outbound? OutboundMessage { get; set; } 
} 

public class Inbound 
{ 
    public string Body { get; set; } 
    // 10 properties... 
} 

public class Outbound 
{ 
    public string Body { get; set; } 
    // 10 properties... 
} 


public class MessageModel 
{ 
    public string Comment { get; set; } 
    public string Body { get; set; } 
    // 10 properties.... 
} 

答えて

0

驚いたことに誰も私に何をすべきかを考え出したので、答えはありませんでした。

子クラスが移入されているかどうかに応じてプロパティを条件付きでマップする必要がある場合、またはそのクラス全体のその他のロジックが必要な場合は、TypeConverterを使用できます。

TypeConverterの内部で、ConvertCore関数でソースパラメータをテストし、適切なソースでMapper.Mapを呼び出して、子クラスのプロパティをモデルに渡します。

マッパーからの戻り値は、宛先に戻って戻すことができます。 TypeConverterでもMapper.Map()を呼び出すことができることは決してありませんでした。

関連する問題