我知道对象的类型(让我们说IAnimal)我需要实例化,并且名称(比如说Tiger)。如果知道对象名称的变量是一个字符串,我如何编写实例化Tiger的代码。我可能在这里遗漏了一些简单的东西,但我现在仍然坚持这一点。
更新:我的意思是Class Tiger:IAnimal,在上面更改以反映这一点。
答案 0 :(得分:5)
示例:
// 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");
答案 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
这就是你在问什么?