【发布时间】:2016-08-07 08:16:48
【问题描述】:
这里有一些代码来给出这个想法。
public class C<T> { }
public class X {
void M() {
var V = new { W = 1 };
var X = new C<V>(); // illegal
}
}
所以 V 是一个匿名类型的变量,我想用 V 作为参数来实例化 C 类。这需要一个我无法提供的类型参数。
这个问题很相似,但对我来说答案没有多大帮助:Why can't I instantiate a generic class inferring types from anonymous objects?
问题背后的问题是我正在尝试做 IEnumerable 可以做的事情。
应该说清楚:我真的不希望通过操纵 object 或 Type 来做到这一点,因为你失去了强类型和 Intellisense 的好处。
对于任何感兴趣的人,此处描述了需要此功能的项目:http://www.andl.org/2016/07/andl-net-making-progress/。
【问题讨论】:
-
可以分享一下C的完整代码
-
您链接到的问题的答案是关于通过辅助方法使用类型推断:
C<T> MakeC<T>(T arg) { return new C<T>(); }- 它启用了以下功能:var X = MakeC(V);。这怎么不能回答你的问题? -
@DevEstacion:不是真的,还不存在!这是实验性的,试图产生类似
IEnumerable<T>的东西,但不是。 -
@PieterWitvoet:接受的答案使用了一个帮助器 class(并且有很多喋喋不休)。我猜我错过了关键位是辅助方法。
标签: c# generics anonymous-types