读书人

C#反射有关问题:未能从程序集“…”中

发布时间: 2012-03-23 12:06:21 作者: rapoo

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!

需要完整的类名,包括命名空间的完整类名。

读书人网 >C#

热点推荐