C#定义使用Reflection创建的Generic的长度

时间:2010-01-16 23:26:33

标签: c# generics

我有这样的代码:

Type typPrecise = MostPrecise(typeof(int), typeof(double));//Evaluates to double

var varGeneric = typeof(Number<>);
var varSpecific = varGeneric.MakeGenericType(typPrecise);
dynamic nmNumber = Activator.CreateInstance(varSpecific);

nmNumber是动态类型,基本上产生通用数字。然后,我如何指定数字中的项目数。

我基本上想要通过使用上面的动态代码来实现这一目标:

Number<typPrecise> whatever = new Number<typPrecise>(10);

欢迎使用4.0概念的答案。

1 个答案:

答案 0 :(得分:3)

调用接受构造函数参数的Activator.CreateInstance的重载:

dynamic nmNumber = Activator.CreateInstance(varSpecific, new object[] { 10 });

顺便提一下,List<T>(int)构造函数设置List的初始容量,而不是初始项目数(Count)。初始计数始终为0.