2017-08-01 1 views
0

一部のプロパティの名前が同じである場合、マッピングを無視できますか?デフォルトではスローエラーです。 旧バージョンのautomapperについていくつかの回答が見つかりましたが、最新のものでは動作しません。Automapper(6.1.1)の最新バージョンを使用して、異なるタイプと同じ名前を持つすべてのメンバーのマッピングを無視します。

たとえば、1つのプロパティは文字列で、もう1つはboolですが、両方とも同じ名前です。私が望む振る舞いは、それらを無視することです(それらをマッピングしようとはしません)。ここで

+1

は、あなたが "さまざまな種類の" 何を意味するのですか? 1つは、DateTimeと1つの文字列、またはそのような何ですか? 「マッピングを無視する」とはどういう意味ですか、除外したいのですか?質問を編集して、何をしようとしているのかの例を示し、それが「うまくいかない」理由を説明してください。 – stuartd

答えて

0

小さな例では、このlink

Mapper.Initialize(cfg => 
{ 
    cfg.CreateMap<Class1, Class2>(); 

    cfg.ForAllMaps((typeMap, mappingExpr) => 
    { 
     var ignoredPropMaps = typeMap.GetPropertyMaps(); 

     foreach (var map in ignoredPropMaps) 
     { 
      var sourcePropInfo = map.SourceMember as PropertyInfo; 
      if (sourcePropInfo == null) continue; 
      if (sourcePropInfo.PropertyType != map.DestinationPropertyType) 
       map.Ignored = true; 
     } 
    }); 
}); 

Class1 src = new Class1() 
{ 
    TestProperty = "A" 
}; 
Class2 dest = Mapper.Map<Class1, Class2>(src); 

テストクラスに基づいています。

public class Class1 
{ 
    public string TestProperty { get; set; } 
} 

public class Class2 
{ 
    public bool TestProperty { get; set; } 
} 
+1

それは考えですが、ForAllPropertyMapsではコードがよく見えるでしょう。 –

+0

そうですね、私はOPが詳細な情報をつけて質問を投稿しようとしない時に、多くの時間に投資したくありません;) – Ben

+0

答えは私が探していたものです!素晴らしい仕事を! – BladeMaster

関連する問題