繁体   English   中英

如何在构造函数中需要初始化的Ninject内核参数中检索对象

[英]How do I retrieve objects in Ninject kernel parameters that need in constructor for initialization

我正在使用Ninject IoC。

我的问题是如何在构造函数中检索需要参数的对象。

下面是一个示例代码:

//Interface for connection
public interface IConnection
{
    IDbConnection CurrentConnection { get; }
}

//Concret connection
public class MyConnection : IConnection
{
    public MyConnection(IDbConnection nativeConnection){  }
}

//Module ninject
class Module : NinjectModule
{
    public override void Load()
    {
        Bind<IConnection>().To<MyConnection>().InSingletonScope();
    }
}

//Native connection
var sqlConn = new SqlCeConnection();

//Ninject kernel
var ker = new StandardKernel(new Module());
return ker.Get<IConnection>(); //How can I pass as parameters to the constructor of class "MyConnection"??

您必须为IDbConnection添加/定义绑定。 然后,Ninject会将其自动传递给构造函数。 例如

Bind<IDbConnection>.To<SqlCeConnection>();

或者你可以在你的模块中有一个常数

private static readonly SqlConnection = new SqlCeConnection();

然后将接口绑定到该接口

Bind<IDbConnection>.ToConstant(SqlConnection);

最好检查页面以获取更多信息。

更新资料

我认为这不是一个非常复杂的设计。 但是,如果您愿意,可以直接将参数传递给构造函数。

ker.Get<IConnection>(new ConstructorArgument("nativeConnection",yourConnection));

我不知道您为什么真正需要它,以及它如何在单例范围内工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM