在程序中知道类名<不是完全限定名>, 怎么得到当前类的命名空间或是类型?
即像VS中调试, 选中类做Quick Watch或是Add Watch得到类的类型.例如:
// 类
namesapce MyNamesapce1
{
   public Class1
   {
       private string name = "Class1";
       public string GetClassName
       {
           get
           {
                return this.name;
            }
        }
    }
}//有这么一条语句
Class1 cls1 = new Class1();
选中"Class1",怎么得到"Class1"的类型.
急急.....

解决方案 »

  1.   

    没听明白,反射不行么typeof()
      

  2.   

    如果是写代码,用typeof()应该就可以了,如果是找反编译的工具,可以考虑Reflector
      

  3.   

    //fileName要查看<.exe>程序集的路径
    Assembly assembly = Assembly.LoadFile(Path.GetFullPath(fileName));
    string manifestName = assembly.ManifestModule.Name;
    Module module = assembly.GetModule(manifestName);
    string varName = "Class1";//Class1是已经加载程序集中的类
    Type type = module.GetType(varName);//如果是完完限定名可以得到类的类型,不是则得不到.
      

  4.   

    可以用Type.Namespace,
                Type type=null;
                foreach (Type t1 in assembly.GetTypes())
                {
                    if(t1.Name=="Class1")
                        type = module.GetType(t1.Namespace + "." + t1.Name);
                }
    但是如果在不同的Namespace都有Class1,怎么知道要用哪一个呢,除非只有一个才行的通。