如何在C#中获取构造函数参数名称

时间:2017-10-03 09:11:00

标签: c# dependency-injection ninject

我想知道如何从DataAccess的默认构造函数中获取参数名称“kernel”。

_kernel.Get<DataAccess>(new Parameter("kernel", _kernel, true));

我想避免这些“神奇的字符串”,并得到类似的东西:

_kernel.Get<DataAccess>(new Parameter(DataAccess.Constructor.kernel, _kernel, true));

此致

1 个答案:

答案 0 :(得分:0)

也许我误解了,你还没解释为什么需要使用命名参数。例如,您不需要将内核作为参数提供。它默认绑定到IKernel,因此如果您的DataAccess类看起来像:

public class DataAccess {
    public DataAccess(IKernel kernel) {
    }
}

然后调用Get应该自动注入内核:

_kernel.Get<DataAccess>();

也就是说,注入内核被认为是不好的做法,请参阅Service Locator antipattern。而是注入你将从内核获得的依赖项,如下所示:

public class DataAccess {
    public DataAccess(IMyDependency myDependency, ...) {
    }
}

让ninject通过绑定来解析依赖关系:

_kernel.Bind<IMyDependency>().To<MyDependency>();