获取一个Assembly中的命名空间列表

通过System.Reflection.Assembly类中提供的方法和属性不能直接获取组件中的命名空间列表。但有方法可以直接获得Assembly中的所有类型,我们便可以通过获取的类型来得到命名空间名称。

具体代码如下所示:

GetNamespaceListOfAssemly.Program

其中的Assembly.GetCallingAssembly()是获取当前的Assembly对象,也可以通过Assembly.LoadFrom等方法载入dll获取Assembly对像。

 

protected void ChooseDLL_Click(object sender, EventArgs e)
{
//string fullPath = Path.GetFullPath(this.FileUpload_DLL.PostedFile.FileName);
//string name = this.FileUpload_DLL.PostedFile.FileName;
//string path = Server.MapPath(name);
//Response.Write(fullPath+"--"+path+"--");
System.Reflection.Assembly dllFile;
Type type;
try
{
dllFile = System.Reflection.Assembly.Load("TangramServer");

Type[] typeList = dllFile.GetTypes();

IList<string> namespacelist = new List<string>();
foreach (Type type1 in typeList)
{
if (!namespacelist.Contains(type1.Namespace))
{
namespacelist.Add(type1.Namespace);
}
}

foreach (string name in namespacelist)
{
Response.Write(name+"~");
}

type = dllFile.GetType();
string Namespac = type.Namespace;

//string dllName = dllFile.GetName().ToString();
//Response.Write(Namespac + "--" + type.Name+"--="+type.FullName);

foreach (Type className in dllFile.ExportedTypes)
{
//ComponentEntity entity = new ComponentEntity();
//entity.Component_Name = className.Name.ToString();
//entity.Component_Feature = "";
//libraryBll.Add(entity);
Response.Write(className.Namespace.ToString()+"\r\n**"+className.Name);
}
}
catch (Exception ex)
{

}

}

posted @ 2014-03-06 17:28  kanek  阅读(2218)  评论(0编辑  收藏  举报