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

具体代码如下所示:

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

其中的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)
{

}

}

相关文章:

  • 2021-09-22
  • 2021-06-27
  • 2022-12-23
  • 2021-05-24
  • 2022-12-23
  • 2021-11-21
  • 2021-05-02
  • 2022-01-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2022-12-23
  • 2021-09-18
  • 2022-12-23
  • 2022-01-13
相关资源
相似解决方案