开发者

Structuremap in VB .Net (WebForms)

I'm in the process of trying to hook StructureMap in to an existing webforms application. Since it's webforms I have to use Setter Injection, which is not ideal, but it's better than nothing.

Where I'm coming unstuck is translating to VB (I'm really a C# dev currently working in a VB shop). I've written a custom scanner, which works fine in C#, but I'm completely stuck on how to go about translating it into VB.

the original C# looks like this:

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

The closest I can get in VB is this:

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 _
    开发者_JAVA百科                            ) _
                            ) _
                        )

    End If

End Sub

I was hoping that reflector would be able to help me out, but that comes up with code that is similar to mine, which also wont compile.

So, what's the translation?


yep in VB.Net 9.0 this will be big problem.

Something ugly like this.

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

or you can wait for VB.Net 10 where it will be much eassier.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜