//父类
class parent
{
}//子类:
class Child
{
   public string childStr;
   
   public Child()
   {
      childSt="I'm Child";
   }
}
//main
static void main(string[] args)
{
    parent f = new Child();
    string typeStr = f.GetType().ToString();
     f=Assembly.Load(typeStr).CreateInstance(typeStr);
    Console.Write(f.childStr);
}
//问题:这样写,会报错。
意图:我想调用子类的某种方法,这种方法是子类中特有的,父类没有的。困难点:但是,前提是父类中只能得到子类的名字的字符串,并不知道具体是哪个子类。只不是只有用类的映射?
这个方面不是很清楚,渴望大侠给予帮助!

解决方案 »

  1.   

    没有看明白你的意图,给你大致写一下,不检测异常:public class parent{  public object getFieldValue(string AssemblyName,string TypeName,string FieldName)
      {
        object f=Assembly.Load(AssemblyName).CreateInstance(TypeName);
        FieldInfo p=f.GetType().GetField(FieldName);
        return p.GetValue(f);
      }
    }但是,这比直接写:
      public string getFieldValue(Child f)
      {
        return f.ChildString;
      }
    慢至少1000倍速度,如果你不需要CreateInstance也好不少。如果你的程序需要多次运行这样的代码,那么CPU真是很痛苦。