我有限定範圍的對象:Ninject上下文提取
Bind<ISomething>().To<Something>().DefinesNamedScope(SomethingScope);
我也有一個自動生成的工廠,創建IAnotherThing:
public interface IAnotherThingFactory
{
IAnotherThing CreateAnotherThing(ISomething x);
}
並將其綁定:
Bind<IAnotherThingFactory>().ToFactory();
我想在ISomething的上下文中創建IAnotherThing,所以我可以例如有一個ISharedPrivateDependency,它們都獲得相同的實例。但是,某些東西一定不會意識到其他東西。這意味着,理想情況下,應該有一種方法可以從ISomething參數中提取上下文,並使用它爲IAnotherThing設置上下文。
爲了得到這種行爲,我必須定義或編寫什麼綁定?
我不想直接暴露內核,只有工廠。評論後
編輯:
- 把工廠進行AnotherThing到ISomething解決上下文問題,但暴露ISomething到IAnotherThing。以上是對答案的要求:ISomething一定不知道IAnotherThing。所以這是一個不行。
- 在ISomething接口中公開Ninject-internals也是一樣。
你能說清楚你的意思是「背景」嗎?你在問'如果沒有'ISomething'知道'IAnotherThing',如何讓'IAnotherThing'在'ISomething'內部可用? ... –
Ninject Context Preservation Extension中的上下文。 – Wilbert
您是否明確需要使用'ToFactory()'還是可行的以創建您自己的工廠/提供者? – cvbarros