c# - 将匿名泛型类型与多个泛型一起使用

标签 c# generics types anonymous-types

查看此内容后blog作者:Kirill Osenkov(How to create a generic List of anonymous types?)我正在尝试做一些更高级但有问题的事情。

编译以下代码:

    var anon = new { One = "1", Two = "2" };
    var result = DoSomething(anon);

    public static T DoSomething<T>(T value)
    {
        return value;
    }

但是如果我尝试添加一个额外的泛型类型,我无法构建它:

    var anon = new { One = "1", Two = "2" };
    var result = DoSomethingElse<int>(anon);

    public static T2 DoSomethingElse<T, T2>(T value)
        where T2 : new()
    {
        return new T2();
    }

因为我无法指定 T 是 typeof(anon),所以当给定 T2 的类型时,我似乎无法让它推断出这一点。这可能吗?

最佳答案

没有。 C# 编译器不支持此类功能。您必须手动指定所有通用参数,或者不指定任何通用参数并依赖类型推断。

最接近的是以下内容

var anon = new { One = "1", Two = "2" };
var result = DoSomethingElse(anon,42);

public static T2 DoSomethingElse<T, T2>(T value, T2 otherValue)
    where T2 : new()
{
    return new T2();
}

关于c# - 将匿名泛型类型与多个泛型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3111264/

相关文章:

c# - 与 LINQ to XML 合并

C# .net -> SQLite 错误 : Unable to open the database file

java - 自 Java5 + 菱形运算符以来初始化通用集合的方法

c++ - 读取文件多数据类型 (c++)

xcode - 为什么文字值没有类型?

c# - 列表之间不能进行相交

c# - 发现多个导出与 MEF ImportMany 的约束异常相匹配

c# - 通用存储库 - IRepository<T> 或 IRepository

c# - 通用列表方法问题

java - 为什么我的输入 -100000000000000 得到不正确的输出?