c# - 在方法的参数和返回类型上使用不同的泛型类型

标签 c# generics

我正在研究一个通用实用方法,它接受一个通用参数并返回一个通用类型——我希望这是有道理的!——但我希望返回类型与参数不同。

如果我用伪代码模拟它,我认为这应该是这样的:

public static IEnumerable<R> DoSomethingAwesome<T>(T thing) 
{
    var results = new List<R>();

    for (int xx = 0; xx < 5; xx++)
    {
        results.Add(thing.ToRType(xx));
    }

    return results;
}

如果泛型无法推断返回类型,我该如何去做这样的事情呢?到目前为止,我的 Google-Fu 失败了。

最佳答案

// You need this to constrain T in your method and call ToRType()
public interface IConvertableToTReturn
{
    object ToRType(int someInt);
}

public static IEnumerable<TReturn> DoSomethingAwesome<T, TReturn>(T thing)
    where T : IConvertableToTReturn
{
    Enumerable.Range(0, 5).Select(xx => thing.ToRType(xx));
}

关于c# - 在方法的参数和返回类型上使用不同的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268555/

相关文章:

c# - 适用于 Windows 的 Webview 应用程序

c# - 如何在代码隐藏中从 Application.Resources 访问命名资源?

c# - 是否可以单击 Button 而不会失去对 TextBox 的关注?

C++ 的性能比 C 更好?

c# - 创建不能接收空参数的方法或列表

java - 使用枚举集的泛型类构造函数的问题

c# - 将字符串转换为时间

c# - 如何使用 sharpsvn 获取修订列表

Swift 泛型与任何泛型

swift - 为什么 Swift 需要覆盖泛型父类(super class)的指定初始化器?