Структура карты в VB .Net (WebForms) - PullRequest
0 голосов
/ 21 октября 2009

Я пытаюсь подключить StructureMap к существующему приложению веб-форм. Так как это веб-формы, я должен использовать Setter Injection, что не идеально, но лучше, чем ничего.

Куда я иду, отклеиваюсь - это перевод на VB (я действительно разработчик C #, в настоящее время работаю в магазине VB). Я написал собственный сканер, который отлично работает в 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

Я надеялся, что рефлектор сможет мне помочь, но в результате получается код, похожий на мой, который также не компилируется.

Итак, что за перевод?

1 Ответ

0 голосов
/ 21 октября 2009

Да, в 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, где будет намного проще.

...