Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Ninject动态多构造函数参数_Vb.net_Winforms_Ninject - Fatal编程技术网

Vb.net Ninject动态多构造函数参数

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

我一直在将依赖项注入实现到现有的Winforms项目中,到目前为止进展顺利,但是我想概括表单的调用,特别是不同数量的构造函数参数

我的代码如下:

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())