如果我有一个带有一个或多个通用参数的接口...

interface IFoo<T1, T2> {}


...是否有可能在将其作为参数的方法的返回类型中引用其一个或多个通用参数类型?

static IFoo.T2 Grab(IFoo<T1, T2> foo)
{
    // TODO: return something.
}

最佳答案

这取决于您在类中定义T1T2的方式。您有两个机会:


使包含静态方法的类通用:

class MyClass<T1, T2>
{
    static T2 Grab(IFoo<T1, T2> foo) { ... }
}

仅使方法本身通用:

static T2 Grab<T1, T2>(IFoo<T1, T2> foo) { ... }



在这两种情况下,您都不能简单地使用IFoo中的泛型参数,因为实际上没有该接口的实例。即使您有这样的实例,它也与您的方法无关。

关于c# - 我可以使用泛型类型参数作为返回类型吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51950914/

10-08 22:21
查看更多