查看此内容后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/