在c#中定义集合时,类名作为字符串

本文关键字:字符串 定义 集合 | 更新日期: 2023-09-27 18:06:27

我有一个类名作为字符串,我使用TYPE

Type type = myvar.GetType();  
string _className = type.ToString(); // getting the class name

我的问题是如何在下面的代码中使用这个字符串_className ?

var data = this.ItemsSource as ObservableCollection<**_className**>()[2];

这里ItemsSource是通用的。

在c#中定义集合时,类名作为字符串

您可以使用反射和Activator.CreateInstance方法来做到这一点:

Type type = myvar.GetType();  
string className = type.ToString(); 
Type genericType = Type.GetType(className);
Type observableCollectionType = typeof(ObservableCollection<>);
Type constructedType = observableCollectionType.MakeGenericType(genericType);
var constructedInstance = Activator.CreateInstance(constructedType);