C#反射问题:未能从程序集“……”中加载类型“……”
以下为我的实现代码:
- C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace ConsoleApplication1{ public interface ICar { void Say(); } public class Bus : ICar { public void Say() { Console.WriteLine("I am a Bus"); } } public class Truck : ICar { public void Say() { Console.WriteLine("I am a Truck"); } } public class CarFactory { public static ICar BuildCar(string name) { ICar myCar = null; try { Type type = Type.GetType(name, true); myCar = (ICar)Activator.CreateInstance(type); } catch (TypeLoadException e) { Console.WriteLine("Unknow Car. Exception: - {0}", e.Message); } return myCar; } } class Program { static void Main(string[] args) { Console.WriteLine("Programm Started:"); Console.WriteLine("---------------------------------------"); Console.WriteLine(""); string strClass = "Bus"; ICar myCar = CarFactory.BuildCar(strClass); //myCar.Say(); Console.WriteLine(""); Console.WriteLine("---------------------------------------"); } }}
以下为运行后的错误信息:
Programm Started:
---------------------------------------
Unknow Car. Exception: - 未能从程序集“ConsoleApplication2, Version=1.0.0.0, Cul
ture=neutral, PublicKeyToken=null”中加载类型“Bus”。
---------------------------------------
请按任意键继续. . .
求解。。。。。。
[解决办法]
ICar obj1=(ICar)Activator.CreateInstance(System.Type.GetType ("ConsoleApplication1.Bus"));
[解决办法]
重点是。。。。你的类型名称写错了。
不应该是 Bus 而应该是 ConsoleApplication1.Bus!
需要完整的类名,包括命名空间的完整类名。