Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net与C#lambda表达式_Vb.net_Lambda - Fatal编程技术网

vb.net与C#lambda表达式

vb.net与C#lambda表达式,vb.net,lambda,Vb.net,Lambda,当解析一个非常简单的lambda表达式时,我面临一个奇怪的问题 在C#,我有这个 class Class1 { } class Class2 : Class1 { } class Invoker { public System.Linq.Expressions.Expression<Func<Class1>> GetExpression() { return () => new Class2(); } } 这将返回一个节

当解析一个非常简单的lambda表达式时,我面临一个奇怪的问题

在C#,我有这个

class Class1
{
}

class Class2 : Class1
{ }

class Invoker
{
    public System.Linq.Expressions.Expression<Func<Class1>> GetExpression()
    {
        return () => new Class2();
    }
}
这将返回一个节点类型为Convert(????)的lambda表达式

我想这与从(类2的)Func表达式到(类1的)Func表达式的转换有关

我试着玩像Option Strict这样的项目属性。。。我不能让它在VB中工作

有没有办法在VB中获得正确的lambda表达式?我需要这个来实现一个EnterpriseLibrary TraceListener。调用GetExpression()的基类验证lambda并尝试将其强制转换为System.Linq.Expressions.NewExpression(在VB中失败,因为它是一个单变量表达式,因为转换)

谢谢


Renaud

当我在Visual Studio(V2008,64位控制台应用程序,3.5框架)中运行这两段代码时,它们都返回一个带有
NodeType==ExpressionType.Lambda的表达式。对不起,我忘了提到我在.Net 4.0中使用VS 2010
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