获取用于具有类名的项目的引用dll名称

时间:2013-04-03 12:26:59

标签: c# .net dll namespaces .net-assembly

如何在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()它没有帮助我

等待你的回复

1 个答案:

答案 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));
                }
            }

        }