2011-02-10 6 views
0

私は次のようなオブジェクトのリストを持っている:AutoMapperと異なるオブジェクトが

A: IBaseType 
{ 
    string X 
    DateTime Y 
    int Z 
} 

をし、私は彼らの性質に基づいて生成される3つの異なるオブジェクトをマッピングした後に取得したいです。例えば

Mapper.Map<IList<A>, IList<IBaseType>>(list); 

と出力コレクション内の

が異なるオブジェクト

X: IBaseType 
{ 
    string X; 
} 

Y: IBaseType 
{ 
    DateTime Y 
} 

などを取得します。

それともこのようなもので:

Mapper.CreateMap<Item, ItemModel>().FromMap(d=>d.Conditions, opt=>(there some like to IValueResovler); 
+0

を使用します。このような

何か。 – driis

+0

@driis私はこれをどうやってやれるか知っていますか? –

+0

あなたはおそらくタイプ選択コードを自分で書く必要があります。 'A'インスタンスがマップされる型を決定したら、AutoMapperを使ってプロパティをマップできます(おそらく)。 – driis

答えて

1

私は最善の方法は、カスタムマッピング機能を実装することだと思います。私はAutoMapperは(それがあなたの質問と仮定)ことをサポートしていないと思う

public IBaseType Map(A item) 
{ 
    if (/*your condition*/) 
      return new X(){ X = item.X} 

    else if (/*your condition*/) 
      return new Y(){ Y = item.X} 
} 

と、この方法

List<IBaseType> result = new List<IBaseType>() ; 
list.Foreach(x => result.Add(Map(x))); 
+0

私はこのようにしました。しかし、私はAutoMapperを通してこれを解決しようとしています。 –

+0

AutoMapperを使用して解決するのは非常にコストがかかります –

関連する問題