문제

이 슬라이딩 유리 문을 통해 머리를 두려고합니다. VB.NET에서 다음 코드를 실행하여 생명을 구하는 방법을 알 수 없습니다.

private static void InitStructureMap()
    {
        ObjectFactory.Initialize(x =>
                                     {
                                         x.AddRegistry(new DataAccessRegistry());
                                         x.AddRegistry(new CoreRegistry());
                                         x.AddRegistry(new WebUIRegistry());

                                         x.Scan(scanner =>
                                                    {
                                                        scanner.Assembly("RPMWare.Core");
                                                        scanner.Assembly("RPMWare.Core.DataAccess");
                                                        scanner.WithDefaultConventions();
                                                    });
                                     });
    }
도움이 되었습니까?

해결책

현재는 불가능합니다. VB의 현재 버전은 멀티 린 (또는 명령문) Lambdas를 지원하지 않습니다. 각 람다는 하나의 단일 발현 만 포함 할 수 있습니다. 다음 버전의 VB는이를 수정합니다 (마지막 릴리스에서는 시간이 충분하지 않았습니다).

그 동안 대의원과 관련이 있어야합니다.

Private Shared Sub Foobar(x As IInitializationExpression)
    x.AddRegistry(New DataAccessRegistry)
    x.AddRegistry(New CoreRegistry)
    x.AddRegistry(New WebUIRegistry)
    x.Scan(AddressOf Barfoo)
End Sub

Private Shared Sub Barfoo(ByVal scanner As IAssemblyScanner) 
    scanner.Assembly("RPMWare.Core")
    scanner.Assembly("RPMWare.Core.DataAccess")
    scanner.WithDefaultConventions
End Sub

' … '
ObjectFactory.Initialize(AddressOf Foobar)

다른 팁

내 vb.net은 긁히지 않으므로 코드를 직접 도와 드릴 수 없습니다. 그러나 내가 당신에게 말할 수있는 것은 스스로하는 방법입니다. 기본적으로 사용해야합니다 반사기 이 코드가 포함 된 실행 파일을 읽은 다음 vb.net으로 출력하도록 선택할 수 있습니다.이 트릭은 두 가지 방식으로 작동합니다.

어쨌든 굉장합니다. 어떤 이유로 든 컴파일하지 않습니다. 어.

그래도 다음은 다음과 같습니다.

Private Shared Sub InitStructureMap()
ObjectFactory.Initialize(Function (ByVal x As IInitializationExpression) 
    x.AddRegistry(New DataAccessRegistry)
    x.AddRegistry(New CoreRegistry)
    x.AddRegistry(New WebUIRegistry)
    x.Scan(Function (ByVal scanner As IAssemblyScanner) 
        scanner.Assembly("RPMWare.Core")
        scanner.Assembly("RPMWare.Core.DataAccess")
        scanner.WithDefaultConventions
    End Function)
End Function)
End Sub

그리고 나는 그것을 한 줄로 만들기 위해 _을 추가하려고 시도했습니다 (또한 작동하지 않았습니다)

 Private Shared Sub InitStructureMap()
ObjectFactory.Initialize(Function (ByVal x As IInitializationExpression) _
    x.AddRegistry(New DataAccessRegistry) _
    x.AddRegistry(New CoreRegistry) _
    x.AddRegistry(New WebUIRegistry) _
    x.Scan(Function (ByVal scanner As IAssemblyScanner) _
    scanner.Assembly("RPMWare.Core") _
    scanner.Assembly("RPMWare.Core.DataAccess") _
    scanner.WithDefaultConventions() _
    End Function) _
End Function) 
End Sub

다른 사람이 레거시 앱을 싫어합니까? :피

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top