この比較的小さなプロジェクトで Ninject の使用を開始しましたが、問題が発生しました:私はこのクラスを持っています
class SomeService : ISomeService
それはに依存します
class BizLogicModule : IBizLogicModule
それは次に依存します
class DataRepository : IDataRepository
これにDataRepository
は、次のような ctor があります。
DataRepository(BizEntityModel context)
BizEntityModel
ここで、複数のインスタンスにわたって単一のインスタンスを使用できるようにする必要がありIDataRepository
ます。また、 の寿命に沿って
を作成する必要があります。はNinjectについて知らないので、そのままにしておきたいです。IDataRepository
IBizLogicModule
IBizLogicModule
だから私の問題は: Ninject カーネルを使用して、すべてを接続する方法です:
レイヤー間でカーネル インスタンスを渡す必要はありません。
以前のNinjectに近いコードを読みやすいままにします(私はファクトリメソッドを使用して新しくしただけです)。
これまでに得た配線の簡単な部分は次のとおりです。
Bind<SomeService>().To<ISomeService>();
Bind<BizLogicModule>().To<IBizLogicModule>();
Bind<DataRepository>().To<IDataRepository>();
Bind<BizEntityModel>().To<BizEntityModel>(); //ToSelf()
// .WithConstructorArgument(context => Kernel.Get<BizEntityModel>)
ご指導よろしくお願いします
編集:あなたの答えをありがとう!
リクエストされたデータは次のとおりです:
BizEntityModel
Ninject に登録されています (コードが更新されました)。
私が正しく理解していれば、「ファクトリーメソッド」を使用してIDataRepository
inのインスタンスを作成できます。IBizLogicModule
しかし、それは私に次のことを残します:
1)ファクトリーメソッドにaを渡す必要がありBizEntityModel
ます。場合によってはそのふすまが新しく、場合によっては既存のインスタンスです。ファクトリ メソッドを使用すると、毎回新しく作成されます。
2)これは別のアセンブリにある問題でSomeService
あり、Ninject.dll への参照があるだけですか?