2013-04-15 4 views
2

아주 간단한 람다 식을 파싱 할 때 이상한 문제에 직면하고 있습니다.vb.net 대 C# 람다 식

는 C#에서 난은 NodeType이

class Class1 
{ 
} 

class Class2 : Class1 
{ } 

class Invoker 
{ 
    public System.Linq.Expressions.Expression<Func<Class1>> GetExpression() 
    { 
     return() => new Class2(); 
    } 
} 

이 예상 복귀 같은 식을 가질 = 뉴 VB.NET, 난이 람다를 반환

Public Class Class1 

End Class 

Public Class Class2 
    Inherits Class1 

End Class 

Public Class Invoker 
    Public Function GetExpression() As Expression(Of Func(Of Class1)) 
     Return Function() New Class2() 
    End Function 

End Class 

NodeType = Convert (?????) 표현식

변환 f와 관련 있다고 가정합니다. ROM Expression (Of Func (Of Class2)) to Expression (Of Func (Of Class1))

Option Strict와 같은 프로젝트 속성을 사용하여 재생 해봤는데 VB에서 작동하지 않습니다.

VB에서 올바른 람다 식을 얻을 수있는 방법이 있습니까? EnterpriseLibrary TraceListener를 구현하려면이 기능이 필요합니다. GetExpression()을 호출하는 기본 클래스는 람다의 유효성을 검사하고이를 System.Linq.Expressions.NewExpression으로 캐스팅하려고합니다 (Convert 때문에 UnaryExpression이므로 VB에서 실패합니다).

감사

르노

답변

0

나는 Visual Studio에서 코드의 두 개 실행 (V2008을, 64 비트 콘솔 응용 프로그램, 3.5 프레임 워크), 둘 다

+0

미안 해요, 난 잊었 NodeType == ExpressionType.Lambda와 표현을 반환 언급 난 VS 2010 with. NET 4.0을 사용하고 있습니다. –