比如传入一个参数值为abc,那new一个abc(),如果传入xyz,则new xyz(),传入的变量不确定,而且我不想用选择语句来决定执行那个类。这样的话,我只要加入不同的类,而不用改动主程序就可以很方便的扩展程序的功能。
那位有着方面的经验,说说看。如果有些简单的代码,那就更好了,可以帮助我的理解。

解决方案 »

  1.   

    反射
    http://blog.csdn.net/cuike519/archive/2004/08/29/87929.aspx
      

  2.   

    使用反射,下面是一段代码,用来调用BusinessLayer.Area类的静态方法SelectAll,并获取返回值: String tmp = "BusinessLayer.Area";
    Type type = Type.GetType(tmp);
    DataTable table = (DataTable)type.InvokeMember("SelectAll", 
    BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, null, null);
      

  3.   

    可以把类配置到配置文件中。key值不变,而value里的类型可以改变。同时再使用一个缓存机制缓存这些instance
      

  4.   

    这是一个老生常谈的话题了,你可以试着用以下方法来实现:1、定义一个函数,其中至少有两个参数:
    public object getObject(strFullClassName,strAssembly)
    {
        object o;
        //strFullClassName必须是完整的类名,比如System.String
        //strAssembly是添加非系统的dll后显示的名称,当strFullClassName是
        //系统自带的时候,设置strAssembly为空。
        if (strAssembly.Length == 0)
        {
            Type t = Type.GetType(strFullClassName);
            o = Activator.CreateInstance(t);
        }
        else
        {
            Type t = Type.GetType(strFullClassName + "," + strAssembly);
            o = Activator.CreateInstance(t);
        }
        
        return o;
    }