我要弄个反射工厂~可是他说实例化没有~请修改代码~CSDN的兄弟们靠你们了~5555~~
我都发了2贴了每人鸟我555~~高手们出来吧 ~~》。。~~工厂:
public class PersonFactory
    {
       public  Person CreatePerson(string type)
       {
           Person person = null;
           person=(Person)Assembly.Load("20100105-con").CreateInstance(type);
           return person;
       }
       
    }在启动时是:
PersonFactory pf = new PersonFactory();
            pf.CreatePerson("Students").SayHi();
            Console.Read();学生类:
  public class Students:Person
    {
       public override void SayHi()
       {
           Console.WriteLine("你好我是{0}学生哦!",base.Name);
       }
    }老师类:
 public class Teacher:Person
    {
       public override void SayHi()
       {
           Console.WriteLine("我是{0}老师!",base.Name);
       }
    }
基类是:
abstract  public  class Person
    {
        private string name;        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string sex;        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }
     public abstract  void SayHi();
    }

解决方案 »

  1.   

    不知道你的命名空间是什么。
      看了一下,应该是
    Assembly.Load("20100105-con").CreateInstance(type)
    这一行的问题。
      1、按照你的代码,Load传入的应该是dll名。
      2、CreateInstance的参数应该是对象的完全限定名。
      

  2.   

    20100105-con是我的命名空间
      

  3.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;namespace ConsoleApplication10
    {
        class Program
        {
            static void Main(string[] args)
            {
                PersonFactory pf = new PersonFactory();
                //参数应该是完整的类型名,即:命名空间名.类名
                pf.CreatePerson("ConsoleApplication10.Teacher").SayHi();            Console.ReadKey();
            }
        }
        //工厂: 
        public class PersonFactory
        {
            public Person CreatePerson(string type)
            {
                Person person = null;
                //参数为程序集的名称
                person = (Person)Assembly.Load("ConsoleApplication10").CreateInstance(type);
                return person;
            }    }
        //学生类: 
        public class Students : Person
        {
            public override void SayHi()
            {
                Console.WriteLine("你好我是{0}学生哦!", base.Name);
            }
        }    //老师类: 
        public class Teacher : Person
        {
            public override void SayHi()
            {
                Console.WriteLine("我是{0}老师!", base.Name);
            }
        }
        //基类是: 
        abstract public class Person
        {
            private string name;        public string Name
            {
                get { return name; }
                set { name = value; }
            }
            private string sex;        public string Sex
            {
                get { return sex; }
                set { sex = value; }
            }
            public abstract void SayHi();
        }}
      

  4.   

    Assembly.Load("20100105-con").CreateInstance(type); 
    十有八九是这个传错了  要传Students类所在的程序集名称(就是工程名)
      

  5.   

    是呀~不过还是报错,没实例化~
    20100105-con.Students