c# - 如何创建类的对象,其中类名存储在 C# 中的字符串变量中

标签 c#

我在 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/

相关文章:

c# - XNA - 键盘文本输入

c# - EF 很多或默认

c# - 仅通过 Ninject 将存储库绑定(bind)到基类?

c# - 了解对象中的属性类型 C#

c# - Active Directory UserPrincipal.Current.GetGroups() 在本地而不是在 Web 服务器上返回组

c# - ViewData 中的 HTML 标记呈现问题?另外,MVC 中的 MultiView 功能?

C#/Linq - 排序 IDictionary

c# - 更改 DataGridViewComboBoxColumn 单元格的背景颜色

c# - 正则表达式允许所有字符,长度应为 1-50 个字符

c# - 霍普菲尔德贡献矩阵模式识别