我正在尝试学习 Ninject,并从我认为非常简单的事情开始。不能让它工作。显然,我缺少一些基本的东西。
所以,我有这个小控制台应用程序,它在某个端口上侦听 WCF 调用,并将通过 WCF 传入的数据保存到数据库中。解决方案中有 3 个项目:1. 数据访问库,2. WCF 东西和 3. 充当主机的控制台。Ninject 尚未使用。所以项目之间的依赖是这样的:3 -> 2 -> 1
我想首先将控制台主机从其配置中获取的连接字符串注入数据访问库。谷歌搜索连接字符串的注入带来了一些例子,但它们并不完整。
建议在主机的 Main() 中绑定的示例之一,如下所示:
static void Main(string[] args)
{
new StandardKernel().Bind<ConnectionStringProvider>().ToConstant(
new ConnectionStringProvider { ConnectionString = Config.ConnectionString });
}
其中 ConnectionStrinProvider 是一个简单的类,它只包含一个属性 ConnectionString。我想不通的是如何在数据访问库中实例化 ConnectionStrinProvider。我试过了
var csprovider = new StandardKernel().Get<ConnectionStringProvider>();
它不起作用 - 这意味着它返回提供者的新实例,而不是在绑定期间创建的实例。我还尝试将 .InSingletonScope() 添加到绑定中,结果相同。