我正在努力学习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()添加到绑定中,结果相同。
你能否提供一个如何实现我的目标,而不会出错的代码示例?我迄今为止看到的例子在Main中绑定了一些东西,并通过调用kernel.Get()来解析其他模块中的依赖关系,而不用解释内核变量来自哪里。在控制台应用程序中将它公开为某个类的静态成员将会创建从数据访问库到控制台应用程序(1 - > 3)的依赖关系,在我看来,这将首先破坏使用Ninject的目的(这是减少耦合)。 – user1373607
我很高兴提供一个更完整的示例,但是您能否详细说明如何与数据访问库进行交互?你可以向我展示你在DAL中实例化/调用东西的代码(通过编辑你的问题)吗?另外,你可以提供更多的上下文(比如周围的类)来获得'ConnectionStringProvider'吗? –