私はこのクラスを持っています。 Tはbool Equals(object obj)
、int GetHashCode()
とIEquatable<SyncObject>
を実装クラス内の同じオブジェクトタイプのプロパティをマッピングすると、EqualsとGetHashCodeが呼び出されます
public class ConflictItem<T> where T : new()
{
public T CurrentItem { get; set; }
public T RequestedUpdateItem { get; set; }
}
。
IEnumerable<ConflictItem<Order>>
があり、IEnumerable<ConflictItem<OrderDataObject>>
にマップされているとします。これは理由を理解できないEqualsとGetHashCodeを呼び出します。
問題は、マップされた結果オブジェクトConflictItem<OrderDataObject>
が、CurrentItemプロパティとRequestedUpdateItemプロパティの両方で同じオブジェクトインスタンスで終わることです。
私の簡単なAutomapperの設定。
config.CreateMap<ConflictItem<Order>, ConflictItem<OrderDataObject>>().ReverseMap();
config.CreateMap<Order, OrderDataObject>().ReverseMap();
それはリストまたは2つのオブジェクト間のオブジェクトの平等に来るとき、私は理解しますが、なぜAutomapperは、別のオブジェクトに2つの異なる性質のために平等にマッチしますか?設定でこの動作を無効にする方法はありますか?
はこれだけではなく、根本的なコレクションそのものですか? – BlakeH
私は問題を更新して、両方のプロパティで同じオブジェクトインスタンスを持つConflictItemを受け取ることになりました。 –
'Equals'を呼び出すと、2つのプロパティがどのように変化しますか?私はあなたが実際に悪いマッピング設定を持っていると思う。あなたはどのようにマップし、どこに 'Equals'が呼ばれているのかを表示できますか? –