请参考:
http://expert.csdn.net/Expert/topic/1185/1185321.xml?temp=.2095148

解决方案 »

  1.   

    using System;
    using System.Reflection;namespace ConsoleApplication2
    { abstract class BaseClass
    {
    abstract public void W();
    } class ClassA:BaseClass
    {
    override public void W()
    {
    Console.WriteLine("ClassA:W()");
    }
    }
    class ClassB:BaseClass
    {
    override public void W()
    {
    Console.WriteLine("ClassB:W()");
    }
    } class App
    {
    [STAThread]
    static void Main(string[] args)
    {
    string[] classes=new String[]{"ClassA","ClassB"};
    for(int i=0;i<10;i++)
    {
    string strName=classes[new Random().Next()%classes.Length];
    BaseClass bc=AppDomain.CurrentDomain.CreateInstance("ConsoleApplication2","ConsoleApplication2."+strName).Unwrap() as BaseClass;
    bc.W();
    }
    }
    }
    }
      

  2.   

    用 reflectionType type = Type.GetType(Myclass);
    object instance = Activator.CreateInstance(type);
      

  3.   

    MyClass 必须指定命名空间。Type type = Type.GetType("MyNamespace." + Myclass);
    object instance = Activator.CreateInstance(type);