我可以在lamba表达式中包含Generic类型参数吗? (VB.NET 2010)

时间:2010-06-25 06:10:33

标签: vb.net generics lambda type-conversion

(不确定我是否正确地表达了这个问题......)

我想创建一个lambda表达式,该表达式将接受一个Object,尝试将其转换为传入的Type,并打印到控制台是否成功。

乍一看,lambda表达似乎是完成这项任务的一种非常愚蠢的方式,但我真的很想知道我做错了什么,所以我可以更好地发展我的技能。

VS给我一个设计师错误,关于下面表达式中的第二个“T”,告诉我它没有定义)

这是我离开的地方:

Sub MyMethod(ByVal param as Object)
    Dim quickMethod = Sub (Of T)(o as Object) 
                          Console.WriteLine(TryCast(o, T) IsNot Nothing)                                
                      End Sub

    quickMethod(Of myClass1)(param)
    quickMethod(Of myClass2)(param)
    quickMethod(Of myClass3)(param) 
    quickMethod(Of myClass4)(param)

    'further logic below... ;)    
End Sub

1 个答案:

答案 0 :(得分:1)

我不能特别代表VB,但我一般都不知道.NET委托中有任何这样的概念。虽然委托类型可以是通用的,但我不认为您可以在调用程序提供的类型参数中将特定委托实例“打开”。这是一个有趣的想法。

当然,您可以轻松编写一个通用方法来执行此操作,这可能是正确的方法。这是一个有趣的情况,你可以有一个表达所需功能的单一方法接口,但你不能将其表达为委托类型。嗯。仅仅为了讨论,界面可能是这样的:

interface IConverter
{
    bool IsConvertible<T>(object input);
}