在C#中,如何创建一个给定其类型名称的对象?

时间:2010-02-24 01:06:06

标签: c# types type-conversion casting typeof

我知道对象的类型(让我们说IAnimal)我需要实例化,并且名称(比如说Tiger)。如果知道对象名称的变量是一个字符串,我如何编写实例化Tiger的代码。我可能在这里遗漏了一些简单的东西,但我现在仍然坚持这一点。

更新:我的意思是Class Tiger:IAnimal,在上面更改以反映这一点。

3 个答案:

答案 0 :(得分:5)

使用Activator.CreateInstance方法

示例:

// the string name must be fully qualified for GetType to work
string objName = "TestCreateInstance.MyObject";
IProcess txObject = (IProcess)Activator.CreateInstance(Type.GetType(objName));

object o = Activator.CreateInstance("Assem1.dll", "Friendly.Greeting");

另请参阅:Reflection Examples C#

答案 1 :(得分:1)

使用反射按类型名称实例化类的对象。

object o = Activator.CreateInstance(Type.GetType("Tiger"));

请注意,您无法实例化接口(根据您的命名判断),因为它们只是一个定义应该实现的特定类的合同。

答案 2 :(得分:0)

我不确定我完全理解这个问题。但是,假设ITiger实际上是一个具体的类而不是接口(正如I *所暗示的那样)。

您可以使用反射从字符串创建类型的实例和实例。

类似的东西:

ITiger myTiger = Activator.CreateInstance("ITiger") as ITiger;

http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

这就是你在问什么?