在c#中用字符串变量初始化一个类?

Moo*_*oon 5 c# class dynamic instance

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

<?php
  $classname = "test";

  $oTest = new $classname();

  class test{
  }
?>
Run Code Online (Sandbox Code Playgroud)

我怎么在c#中这样做?

Meh*_*ari 19

System.Activator.CreateInstance(Type.GetType(className))
Run Code Online (Sandbox Code Playgroud)

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


Jar*_*Par 5

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

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");
Run Code Online (Sandbox Code Playgroud)