關於IOC Castle Windsor wiki [編者按:編寫此問題後,wiki已更新爲更多示例代碼],有以下(不完整)演示代碼。如何從Castle Windsor文檔運行提供的IOC(Inversion Of Control)演示?
如何完成此代碼,以便在C#控制檯應用程序中正確運行?
//application starts...
var container = new WindsorContainer();
// adds and configures all components using WindsorInstallers from executing assembly
container.Install(FromAssembly.This());
// instantiate and configure root component and all its dependencies and their dependencies and...
var king = container.Resolve<IKing>();
king.RuleTheCastle();
// clean up, application exits
container.Dispose();
更新:
發現tutorial videos on IOC in general。
得到儘可能增加一個接口和一個具體實現的接口:
interface IKing
{
void RuleTheCastle();
}
public class King
{
void RuleTheCastle()
{
Consolel.Write("Rule the castle.");
}
}
然而,當我跑扔運行時錯誤。
更新:
我結束了使用Ninject,因爲:
- 的文檔是遠遠優於溫莎城堡(和Spring.NET爲此事)。
- 它使用expression compilation/LCG,所以它比使用Reflection的Castle Windsor更快(8倍到50倍)。
要開始,點擊「訪問道場」,然後按照series of NInject tutorials on GitHub。
完成此操作後,您可以查看tutorial video on TekPub。該視頻確實很快涉及了這些概念,所以最好先完成series of NInject tutorials on GitHub。
呃,爲什麼不合理?如果溫莎城堡看起來很簡單,那麼在溫莎維基上完成示例演示代碼不是很簡單,所以它可以工作嗎? – Contango 2012-01-07 19:59:18
除了例子之外,你還寫了一些代碼嗎?如果不是,則需要創建IKing接口,創建一個實現IKing接口的具體類,並創建一個配置,告訴Castle.Windsor將IKing解析爲具體的類。 – 2012-01-07 20:08:53
我創建了IKing接口,並創建了一個實現IKing接口的具體類。我沒有創建一個配置來告訴Castle.Windsor將IKing作爲具體的類來解決 - 我認爲這會自動發生。 – Contango 2012-01-07 20:18:59