デスクトップ アプリと Web アプリの両方で使用するためのライブラリがあります。
このライブラリには、デスクトップではシングルトンとしてバインドする必要があり、Web ではリクエスト スコープにする必要がある外部データ アクセス コンポーネントへの参照があります。
- デスクトップ プロジェクトはコア プロジェクトを参照します
- Web プロジェクトの参照コア プロジェクト
- コア プロジェクトは ExternalComponent を参照します
今日、私はWebクライアントでこれを行うことを余儀なくされています:
Bind<ExternalComponent.IDataAccessComponent>()
.To<ExternalComponent.DataAccessComponent()
.InRequestScope()
.WithConstructorArgument(...);
デスクトップクライアントでも同じですが、InSingletonScope()
これにより、WebアプリとデスクトップアプリがExternalComponent.dllを参照するようになりますが、これは私の意図ではありません。
クライアントがこのデータ アクセス コンポーネントを参照することなく、この外部コンポーネントが必要なスコープをクライアント (Web またはデスクトップ) から指定できるように、バインディングを作成するにはどうすればよいですか?
クライアントが必要とするスコープを受け取り、すべてを設定する Core プロジェクトのいくつかのメソッドを考えていますが、Ninject API でそれを実行できるものを見つけることができません。