【问题标题】:initialize a class by string variable in c#?在c#中通过字符串变量初始化一个类?
【发布时间】:2010-11-18 03:38:20
【问题描述】:

是否可以通过字符串变量来初始化一个类?我有 PHP 代码。

<?php
  $classname = "test";

  $oTest = new $classname();

  class test{
  }
?>

如何在 C# 中做到这一点?

【问题讨论】:

  • 我认为 JaredPar 回答了您的问题,但是您为什么需要这个?你想解决什么问题?

标签: c# class dynamic instance


【解决方案1】:
System.Activator.CreateInstance(Type.GetType(className))

然而,问题在于 C# 3.0 是一种静态类型语言。您不能只在返回的对象上调用随机方法。您可以让您可能实例化的类实现一些通用接口,并将上述表达式的结果转换为接口,或者手动使用反射来调用返回对象的方法。

【讨论】:

  • 看到答案帮助我理解了这个问题。 +1
  • “C#,从 3.0 版开始是一种静态类型语言”是什么意思。这表明它最近才成为一种静态类型语言。一直都是。在 C# 4.0 中有新的 dynamic 关键字,这意味着如果需要,C# 将获得动态语言的某些方面。
  • Colin:我的措辞可能模棱两可。固定。
【解决方案2】:

您可以使用 Activator.CreateInstance 方法来实现类似的结果。但是除了类型的完全限定名称之外,您还必须提供程序集名称

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");

【讨论】:

    【解决方案3】:

    您可以使用 Activator.CreateInstance。各种重载的文档在这里:http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

    【讨论】:

      猜你喜欢
      • 2015-09-08
      • 2010-11-26
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2019-06-17
      • 2012-09-27
      相关资源
      最近更新 更多