【发布时间】:2010-11-18 03:38:20
【问题描述】:
是否可以通过字符串变量来初始化一个类?我有 PHP 代码。
<?php
$classname = "test";
$oTest = new $classname();
class test{
}
?>
如何在 C# 中做到这一点?
【问题讨论】:
-
我认为 JaredPar 回答了您的问题,但是您为什么需要这个?你想解决什么问题?
是否可以通过字符串变量来初始化一个类?我有 PHP 代码。
<?php
$classname = "test";
$oTest = new $classname();
class test{
}
?>
如何在 C# 中做到这一点?
【问题讨论】:
System.Activator.CreateInstance(Type.GetType(className))
然而,问题在于 C# 3.0 是一种静态类型语言。您不能只在返回的对象上调用随机方法。您可以让您可能实例化的类实现一些通用接口,并将上述表达式的结果转换为接口,或者手动使用反射来调用返回对象的方法。
【讨论】:
您可以使用 Activator.CreateInstance 方法来实现类似的结果。但是除了类型的完全限定名称之外,您还必须提供程序集名称
var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");
【讨论】:
您可以使用 Activator.CreateInstance。各种重载的文档在这里:http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx
【讨论】: