1

如何获取所有引用 dll 名称及其代表类名称以及 C# 中特定 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()它并没有帮助我

等待您的回复

4

1 回答 1

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

        }
于 2013-04-03T12:46:15.530 回答