使用变量实例化对象或对象列表

时间:2013-04-04 15:40:19

标签: c#

假设我有一个名为str的字符串,其值为某个类的名称。 例如string str="MyClass";是否可以使用此变量实例化对象或对象列表?

(那是因为我从一开始就不知道我应该创建什么类型的对象,但是在程序中的某个地方我得到了一个带有类名称的字符串列表)

我真正想要的一些虚假的愚蠢代码是:

List<**str**> myList = new List<str>();

**str** object = new **str**();

提前Thanx!

2 个答案:

答案 0 :(得分:1)

您可以使用反射,假设您的类在同一个程序集中:

string input = "MyClass";

var type = Assembly.GetExecutingAssembly()
                   .GetTypes()
                   .FirstOrDefault(t => t.Name == input);

MyClass myObject = (MyClass)Activator.CreateInstance(type);

答案 1 :(得分:0)

您可以将代码基于以下内容,该代码根据其名称构造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;
        }

    }

}