实例化一个带有变量的对象或对象列表

本文关键字:对象 变量 列表 一个 实例化 | 更新日期: 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;
        }
    }
}