0

与えられた

class A { string Name {get;set;} }
class B { string Name {get;set;} }

次に、automapper を使用して A と B の間を変換します。後で、次のように名前を変更A.NameA.MyNameます。

class A { string MyName {get;set;} }
class B { string Name {get;set;} }

暗黙的な構成のため、これは私のマッピングを壊します。暗黙的な構成は、 と の間の関係を暗黙的に作成しAますB。リファクタリング アルゴリズムはこの関係を認識しないため、中断が生じます。

この問題を解決するマッパーは?

4

2 に答える 2

1

AutoMapper では、マッピング内のすべてのプロパティを (マッピングまたは明示的に無視することによって) 処理したと仮定することが、Mapper.AssertConfigurationIsValid();この問題を管理する方法です。

ドキュメントが言うように:

このコードを実行すると、説明メッセージとともに AutoMapperConfigurationException が生成されます。AutoMapper は、すべての Destination 型メンバーがソース型に対応する型メンバーを持っていることを確認します。

したがって、クラスをリファクタリングした後、マッピングが定義されていないため、テストは失敗します。

単体テストに入れるか、テストがない場合はスタートアップ コードに入れることができます。

于 2016-07-08T17:01:11.623 に答える
0

インターフェイスinterface ABcommon { string Name {get;set;} }を使用し、クラス A と B がそれを実装します。名前の変更が機能します。

于 2016-07-08T15:39:54.190 に答える