2

多くのプロパティを持つかなり大きなオブジェクトがあります。

Automapper を使用して、グリッドからプロパティにマップしています。

マッピングする必要があるプロパティはごくわずかで、残りはマッピング時ではなく後で使用されるため、無視する必要があります。

これらのプロパティをすべて「無視」する方法はありますか、またはすべてのプロパティに対して明示的な「無視」を記述する必要がありますか?以下のコードを参照してください。1つずつ無視するのではなく、「.IgnoreAllNotUsed」を実行できるようにしたいと思います。これは可能ですか?

クラスは別のクラスから継承しますが、ほとんどのプロパティは実際のクラス自体 にあります コードの図へのリンク ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

8

すべてのプロパティを無視してから、ForMember を指定してください。次に例を示します。

var mapping = Mapper.CreateMap<Source, Destination>();
mapping.ForAllMembers(opt=>opt.Ignore());
mapping.ForMember(...)
       .ForMember(...);
于 2012-09-06T16:11:18.873 に答える
4

この拡張メソッドを使用できます。

public static void ForAllUnmappedMembers<TSource, TDestination>(
    this IMappingExpression<TSource, TDestination> mapping, 
    Action<IMemberConfigurationExpression<TSource>> memberOptions)
{
    var typeMap = Mapper.FindTypeMapFor<TSource, TDestination>();
    foreach(var memberName in typeMap.GetUnmappedPropertyNames())
        mapping.ForMember(memberName, memberOptions);
}

次のように使用します。

Mapper.CreateMap<Source, Destination>()
      .ForMember(...)
      .ForAllUnmappedMembers(o => o.Ignore());

私はそれをテストしていませんが、動作するはずです。

于 2012-09-06T05:45:26.403 に答える