0

StructureMap を既存の Web フォーム アプリケーションにフックしようとしているところです。これは Web フォームなので、セッター インジェクションを使用する必要がありますが、これは理想的ではありませんが、何もないよりはましです。

私が行き詰まっているのは、VB への変換です (私は現在 VB ショップで働いている C# 開発者です)。C# で正常に動作するカスタム スキャナーを作成しましたが、それを VB に変換する方法に完全に行き詰まっています。

元の C# は次のようになります。

public void Process(Type type, PluginGraph graph)
{
    if (type.IsInterface)
    {
        graph.Configure(x => x.SetAllProperties(
                y => y.TypeMatches(
                    z => z == type)));
    }
}

私がVBで得ることができる最も近いものはこれです:

Public Sub Process(ByVal type As Type, ByVal graph As PluginGraph) Implements ITypeScanner.Process

    If type.IsInterface Then

        graph.Configure(Function(x) _
                            x.SetAllProperties(Function(y) _
                                y.TypeMatches(Function(z) _
                                    return z Is type _
                                ) _
                            ) _
                        )

    End If

End Sub

リフレクターが私を助けてくれることを望んでいましたが、それは私のものに似たコードを思いつき、それもコンパイルされません。

では、訳は?

4

1 に答える 1

0

はい、VB.Net 9.0ではこれが大きな問題になります。

こんな醜いもの。

Private Sub configure(ByVal type As Type, ByVal graph As PluginGraph)
            If type.IsInterface Then
                graph.Configure(Function(x) setproperties(x, type))
            End If
        End Sub

        Private Function setproperties(ByVal x As Registry, ByVal type As Type) As Boolean
            x.SetAllProperties(Function(y) setTypeMatches(y, type))
            Return True
        End Function

        Private Function setTypeMatches(ByVal y As SetterConvention, ByVal type As Type) As Boolean
            y.TypeMatches(Function(z) returnType(z, type))
            Return True
        End Function

        Private Function returnType(ByVal z As Type, ByVal type As Type) As Boolean
            Return z Is type
        End Function

または、はるかに簡単になる VB.Net 10 を待つことができます。

于 2009-10-21T14:36:03.900 に答える