(不确定我是否正确地表达了这个问题......)
我想创建一个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
答案 0 :(得分:1)
我不能特别代表VB,但我一般都不知道.NET委托中有任何这样的概念。虽然委托类型可以是通用的,但我不认为您可以在调用程序提供的类型参数中将特定委托实例“打开”。这是一个有趣的想法。
当然,您可以轻松编写一个通用方法来执行此操作,这可能是正确的方法。这是一个有趣的情况,你可以有一个表达所需功能的单一方法接口,但你不能将其表达为委托类型。嗯。仅仅为了讨论,界面可能是这样的:
interface IConverter
{
bool IsConvertible<T>(object input);
}