構造マップに IContainer を実装する方法に関する以前の投稿に続いて、しばらくの間、私の最後の問題だと思っていた問題にぶつかりました。
追加の (Structuremap が注入されていない) オブジェクトをコンストラクターに渡すにはどうすればよいですか?
これをテストするために私が持っているサンプル コンソール アプリケーションから以下を取り上げます。
static void Main(string[] args)
{
_container = StructureMapConfig.GetContainer();
_userService = _container.GetInstance<IUserService>();
}
私のコンストラクターには randomParam があり、構造マップにはギャップを埋める方法がわからないため、これにより次のエラーがスローされます。
タイプ 'StructureMap.StructureMapBuildPlanException' の未処理の例外が StructureMap.dll で発生しました
追加情報:具象型 CommonServices.UserService のビルド プランを作成できません
コンストラクタ:
public UserService(IUserRepository userRepository, IStringService stringService, string randomParam)
{
_userRepository = userRepository;
_stringService = stringService;
}
私のレジストリでは、次のようにユーザー サービスを定義します。
this.For<IUserService>().Use<UserService>();
私が持っている質問は、これを最も簡単な方法で行うにはどうすればよいですか?
このリンクを見つけましたが、呼び出し元のクラスに UserService の依存関係を認識させる必要があるため、提案の使用方法がわかりません。ご覧のとおり、それらの一部はデータ レイヤー アイテムであり、UI レイヤーにそれらについて伝えたくありません。
http://structuremap.github.io/resolving/passing-arguments-at-runtime/