在程序中知道类名<不是完全限定名>, 怎么得到当前类的命名空间或是类型?
即像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"的类型.
急急.....
即像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"的类型.
急急.....
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);//如果是完完限定名可以得到类的类型,不是则得不到.
Type type=null;
foreach (Type t1 in assembly.GetTypes())
{
if(t1.Name=="Class1")
type = module.GetType(t1.Namespace + "." + t1.Name);
}
但是如果在不同的Namespace都有Class1,怎么知道要用哪一个呢,除非只有一个才行的通。