2

AutoMapperを使用してドメインエンティティをマップし、Asp.NetMVCアプリでモデルを表示しています。これらのマッピングクラスをCastleWindsorに登録して、コンストラクターの依存性注入を通じてコン​​トローラーが使用できるようにします。これらのマッピングクラスには仮想CreateMapメソッドがあり、AutoMapperのマッピングをオーバーライドして、エンティティからビューモデルにフィールドをマップする方法、無視するフィールド、データを変換するメソッドを指す方法などを指示できます。これらはすべてうまく機能しています。 ; AutoMapperの背後にいる人々に大きな称賛を!

これまで、ウィンザーでシングルトンライフスタイルにマッピングクラスを登録してきましたが、そのうちの1つは、コンポーネントをTransientとして登録する必要があるRhino.SecurityのIAuthorizationRepositoryを使用する必要があります。これにより、マッピングクラスも一時的なものとして登録する必要があります。これは、一時的なIAuthorizationRepositoryへの参照を保持するシングルトンマッピングクラスが、マッパーを2回使用したときに問題を引き起こすためです(つまり、ISessionはすでに閉じられたエラーです)。

これらすべてのマッピングクラスをトランジェントライフスタイルに登録するのはリソースの無駄ですか?これにより、システムがドメインエンティティをビューモデルにマッピングするたびに、マッピングクラスがインスタンス化され、CreateMapメソッドが実行されます。

または、マッピングクラスをシングルトンとして保持できるように、IAuthorizationRepositoryをマッピングクラスから分離する方法を見つける必要がありますか?

ありがとうダン

4

1 に答える 1

2

それを回避する別の方法は、TypedFactoryFacilityを使用することです。次に、シングルトンにIAuthorizationRepositoryを注入する代わりに、注入することができます。Func<IAuthorizationRepository>

于 2010-10-05T18:13:00.470 に答える