关于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