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

C# 如何在Ninject内核参数中检索初始化所需的构造函数中的对象,c#,.net,dependency-injection,compact-framework,ioc-container,C#,.net,Dependency Injection,Compact Framework,Ioc Container,我用的是国际奥委会 我的问题是如何检索需要构造函数中参数的对象 ker.Get<IConnection>(new ConstructorArgument("nativeConnection",yourConnection)); 下面是一个示例代码: //Interface for connection public interface IConnection { IDbConnection CurrentConnection { get; } } //Concret co

我用的是国际奥委会

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

ker.Get<IConnection>(new ConstructorArgument("nativeConnection",yourConnection));
下面是一个示例代码:

//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"??
//用于连接的接口
公共接口i连接
{
IDbConnection CurrentConnection{get;}
}
//混凝土连接
公共类MyConnection:IConnection
{
公共MyConnection(IDbConnection nativeConnection){}
}
//模块ninject
类模块:Ninject模块
{
公共覆盖无效负载()
{
绑定().To().InSingletonScope();
}
}
//本机连接
var sqlConn=new SqlCeConnection();
//Ninject内核
var ker=新的标准内核(新模块());
返回ker.Get()//如何将参数传递给类“MyConnection”的构造函数??

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

Bind<IDbConnection>.To<SqlCeConnection>();
然后将接口绑定到

Bind<IDbConnection>.ToConstant(SqlConnection);
Bind.ToConstant(SqlConnection);
有关更多信息,请参阅“最佳检查”页面

更新

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

ker.Get<IConnection>(new ConstructorArgument("nativeConnection",yourConnection));
ker.Get(新的构造函数参数(“nativeConnection”,yourConnection));

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

但是它是可以的,而且我还有其他连接参数设置,比如字符串:'//Concret连接公共类MyConnection:IConnection{public MyConnection(IDbConnection nativeConnection,string str){}}@treze