我在 C# 中创建类的对象时遇到问题,其中类名存储在字符串变量中
例如。字符串 str="飞行员"As we create object of the class like this
ClassName objectname=new ClassName();
由于某种原因,我需要使用存储我的类名的字符串变量而不是 ClassName。
最佳答案
您将使用Type.GetType(string)
然后Activator.CreateInstance(Type)
:
Type type = Type.GetType(str);
object instance = Activator.CreateInstance(type);
注意:
- 类型名称必须包含命名空间,例如
Foo.Bar.SomeClassName
- 除非您指定程序集限定的类型名称,否则
Type.GetType(string)
将仅在当前执行的程序集和mscorlib
中查找。如果要使用其他程序集,请使用程序集限定名称或使用Assembly.GetType(string)
相反。 - 这假设该类型有一个公共(public)无参数构造函数
- 您的变量类型必须是
实例
,因为变量类型是编译时所需内容的一部分
关于c# - 如何创建类的对象,其中类名存储在 C# 中的字符串变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164632/