如何在委托上指定通用类型?

时间:2010-11-15 10:00:35

标签: vb.net generics

也许我只是没有正确阅读MSDN文档,但是如果函数接受一个字符串参数并返回类型T,那么如何使用Func()将其指定为共享函数?

MSDN说Func(Of In T1, Out TResult),但他们的所有示例都使用相同的数据类型,即Func(Of String, String)。我想做Func(Of In String, Out T),其中T是任意的(但我可以在必要时通过基类约束它)。我想在类级别共享/静态,但封装类本身不是泛型类。在这个特定的场景中,似乎不可能做我想要的,因为编译器无法知道T类在运行时是什么。

那么在VB.net中代理或匿名lambda表达式可以做泛型(而不是C#)吗?

1 个答案:

答案 0 :(得分:2)

目前尚不清楚你究竟要做什么。您当然可以在泛型方法或类型中使用泛型委托类型。作为一个简单的例子:

public T Convert<T>(Func<string, T> converter, string text)
{
    return converter(text);
}

但是,如果没有T作为类型参数本身(在泛型方法或类型中指定),则无法执行此操作。