2009-11-11 53 views
2

使用Spring.NET IoC容器可以這樣做嗎?我可以使用Spring.NET在創建的實例中注入依賴關係嗎?

MyClass instance = new MyClass(); 
ContextRegistry.GetContext().InjectDepenencies(instance); 
// instance has the defined dependencies set 

這會派上用場。我可以使用ContextRegistry.GetContext().Get("name"),但是會創建一個定義對象的新實例。我需要設置已經創建的對象的依賴關係。

+0

我知道這是可能的在Unity中,不知道Spring.NET。 – Konamiman

回答

4

有三個選項可用,第一個選項與您想要的匹配。

  • IApplicationContext.ConfigureObject(對象目標,字符串名稱)

    這將配置使用由名稱參數相匹配的對象的定義的目標對象。

  • IApplicationContext.Get(字符串名稱, 對象[]參數)

    哪要麼使用構造 或靜態工廠方法作爲指定將 接收的參數。

  • GenericApplicationContext.RegisterObjectDefinition(字符串名稱,IObjectDefinition定義)

    你可以用它在運行時註冊的依賴。

1

ContextRegistry.GetContext().Get("name")如果name被定義爲singleton,它將不會創建新實例,它是spring.net中的默認範圍。

+0

這是真的,但在這種情況下單身人士行爲不是一種選擇。 – Max

+0

如果您使用Spring創建對象而不是手動執行它,它將已經注入了依賴關係。那麼你可以詳細闡述一下你的情況嗎? –

+0

我會用這個e。 G。當該對象不是在我的任何代碼中創建的,而是在我的應用程序的範圍之外時,就像在第三方框架中一樣。 – Max

相關問題