Vb.net Ninject动态多构造函数参数
我一直在将依赖项注入实现到现有的Winforms项目中,到目前为止进展顺利,但是我想概括表单的调用,特别是不同数量的构造函数参数 我的代码如下:Vb.net Ninject动态多构造函数参数,vb.net,winforms,ninject,Vb.net,Winforms,Ninject,我一直在将依赖项注入实现到现有的Winforms项目中,到目前为止进展顺利,但是我想概括表单的调用,特别是不同数量的构造函数参数 我的代码如下: Public Shared Function GetForm(formObject As BaseObject, _ parameters As Dictionary(Of String, Object)) As Form Select Case formObject.GetType() Case Ge
Public Shared Function GetForm(formObject As BaseObject, _
parameters As Dictionary(Of String, Object)) As Form
Select Case formObject.GetType()
Case GetType(Production.Task)
Return SMKernel.Kernel.Get(Of Forms.Production.Domain.ManageTask) _
(New Parameters.ConstructorArgument() _
{New Parameters.ConstructorArgument("task", _
CType(formObject, Production.RequiredTask))})
End Select
End Function
这工作正常,接口被正确注入,构造函数参数“task”被填充,表单按预期工作
如您所见,我有一个字典,其中可以包含几个参数,我需要将这些参数添加到Get
方法的ConstructorArgument
部分。看看IntelliSense,我应该能够传入一组ConstructorArgument
对象,但是无论我做了什么尝试,由于某种原因,它似乎都不起作用
如果可能的话,你如何在Ninject中实现这一点。如果这种方法不可行,如何通过Ninject将多个参数传递到表单的构造函数中?使用已经提供的ResolutionExtensions
public static T Get<T>(this IResolutionRoot root, params IParameter[] parameters)
提供更多细节,我们可能会为您提供更优雅的方法 你想要实现什么?字典实际上是一组参数名及其值吗?所以这实际上是一个超动态工厂?没错,字典确实包含一组构造函数参数名称和值,这就是
ConstructorArgument
对象所采用的。我只想将这些对象的数组传递到Get
方法中,根据intellisense,您可以这样做,但由于某种原因,我还没有成功地使其工作,因此我希望在Ninject方面有更多经验的人能让我指出什么(可能很小)我在这里犯了一个错误。我将在以后使用我的开发机器时尝试这个,但从这里看它看起来不错。谢谢
Kernel.Get(parameters.Select(kvp => new ConstructorArgument(kvp.Key, kvp.Value)).ToArray())