使用包含 Type 的变量创建 Generic<T> 类型实例
Posted
技术标签:
【中文标题】使用包含 Type 的变量创建 Generic<T> 类型实例【英文标题】:Creating a Generic<T> type instance with a variable containing the Type 【发布时间】:2011-01-05 22:34:29 【问题描述】:下面的代码可以实现吗?我知道它不起作用,但我想知道是否有解决方法?
Type k = typeof(double);
List<k> lst = new List<k>();
【问题讨论】:
对您的评论“这可以在 C# 4.0 中完成”有点困惑。它不能,至少不能以你展示它的方式。 C# 4 仍然需要在编译时指定泛型类型参数;您仍然不能将 Type 变量作为泛型类型参数传递。 当它是一个问题时,请将其表述为一个问题。指定的代码不能用 C# 4.0 完成。 类似问题:***.com/questions/687363/… 对 C# 4.0 的事情感到抱歉。我的意思是答案可以使用 C# 4.0 中的概念,不一定是代码可以在 C# 4.0 中工作。感谢 DrJokepu 的编辑。 我认为这个问题说得很完美——细节恰到好处! 【参考方案1】:更简洁的方法可能是使用泛型方法。做这样的事情:
static void AddType<T>()
where T : DataObject
Indexes.Add(typeof(T), new Dictionary<int, T>());
【讨论】:
我不确定您所说的“索引”是什么意思,是在别处声明的变量吗?【参考方案2】:是的,有:
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);
【讨论】:
我想这就是我想要的。让我仔细检查一下,我会立即将您的答案标记为答案。 我认为这里的主要问题是你没有向我们描述你想要什么。你向我们展示了某事的失败尝试,然后询问如何完成你想要的。如果您想要答案而不是猜测,您应该描述您需要做什么,而不是您尝试如何去做。 我基本上是想创建一个 List,其中类型被指定为 Type 变量。 感谢 David M,您的代码完全符合我的需要。很抱歉那些因为我没有提供足够的问题而无法回答的人。 通用方法可以这样做吗?我需要传递方法的动态类型,我已经在下面的链接***.com/questions/4101784/…上发布了我的问题以上是关于使用包含 Type 的变量创建 Generic<T> 类型实例的主要内容,如果未能解决你的问题,请参考以下文章