1

私は既存の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"が入力され、フォームは期待どおりに機能します。

ご覧のとおり、メソッドのConstructorArgument一部に追加する必要のあるいくつかのパラメーターを含むことができるディクショナリがあります。GetIntelliSenseを見ると、オブジェクトの配列を渡すことができるはずですが、ConstructorArgument何を試しても、何らかの理由で機能しないようです。

可能であれば、Ninjectでこれをどのように達成しますか。この方法が不可能な場合、Ninjectを介して複数のパラメーターをフォームのコンストラクターに渡すにはどうすればよいですか?

4

1 に答える 1

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

詳細を提供してください。よりエレガントなアプローチを提供する場合があります。

于 2013-01-06T19:04:54.983 に答える