我一直在现有的Winforms项目中实现依赖注入,到目前为止它一直很顺利,但是我想概括一下Forms的调用,特别是不同数量的构造函数参数。
我的代码如下:
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”被填充,Form也按预期工作。
正如您所看到的,我有一个包含几个参数的词典,我需要将这些参数添加到ConstructorArgument
方法的Get
部分。看一下IntelliSense,我应该可以传入一组ConstructorArgument
个对象,但无论我尝试过什么,它似乎都不适用于某种原因。
如果可能的话,你如何在Ninject中完成这个任务。如果这种方式不可行,如何通过Ninject将多个参数传递给Form的构造函数?
答案 0 :(得分:2)
使用已提供的ResolutionExtensions
public static T Get<T>(this IResolutionRoot root, params IParameter[] parameters)
然后将其与LINQ
结合使用Kernel.Get(parameters.Select(kvp => new ConstructorArgument(kvp.Key, kvp.Value)).ToArray())
提供更多详细信息,我们可能会给您更优雅的方法。