如何在C#中使用特定dll反射中使用的命名空间获取所有引用dll名称及其代表类名?
让我们考虑一下sample.dll,其中reference1.dll和reference2.dll通过方法reference1.method1和reference2.method2
用作对样本dll的引用我需要列出
1)reference dll names ie.reference1.dll,reference2.dll
2)methods used in that dll names ie.reference1.method1,reference2.method2
3) Namespace used for referring that reference dll
我尝试了myassembly.GetTypes()
它没有帮助我
等待你的回复
答案 0 :(得分:1)
嗯,我不确定你为什么认为Assembly.GetTypes()
没有帮助......
请注意,并非所有dll都在磁盘上,因此如果您Assembly.Location
而不是名称,则可能会遇到错误。
命名空间不引用特定的程序集,程序集可以包含许多名称空间。
下面的方法将包含.Net框架的一大部分内容,因此您可能希望稍微过滤一下列表。
这有帮助吗?
List<String> Dlls = new List<string>();
List<String> Namespaces = new List<string>();
List<String> Methods = new List<string>();
foreach (var Assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (!Dlls.Contains(Assembly.GetName().Name))
Dlls.Add(Assembly.GetName().Name);
foreach (var Type in Assembly.GetTypes())
{
if (!Namespaces.Contains(Type.Namespace))
Namespaces.Add(Type.Namespace);
foreach(var Method in Type.GetMethods())
{
Methods.Add(String.Format("{0}.{1}", Type.Name, Method.Name));
}
}
}