实例化一个带有变量的对象或对象列表
本文关键字:对象 变量 列表 一个 实例化 | 更新日期: 2023-09-27 18:07:30
假设我有一个名为str的字符串,其值是一个类的名称。例如string str="MyClass";
是否有任何方法来使用这个变量来创建一个对象或一个对象列表?
(这是因为我从一开始就不知道我应该创建什么类型的对象,但在程序的某个地方,我得到了一个带有类名的字符串列表)
我真正想要的一些愚蠢的代码是:
List<**str**> myList = new List<str>();
或
**str** object = new **str**();
提前感谢!
您可以使用反射,假设您的类在同一个程序集中:
string input = "MyClass";
var type = Assembly.GetExecutingAssembly()
.GetTypes()
.FirstOrDefault(t => t.Name == input);
MyClass myObject = (MyClass)Activator.CreateInstance(type);
您可以基于下面的代码,它构造了一个MyClass的实例(给定其名称):
namespace MyNameSpace {
public class MyClass {
public MyClass() {
// initialise
}
public static MyClass CreateMyClassFromName() {
Type myType = Type.GetType("MyNameSpace.MyClass");
System.Reflection.ConstructorInfo constinfo = myType.GetConstructor(new Type[] { });
MyClass mc = (MyClass)constinfo.Invoke(null);
return mc;
}
}
}