C#:列出汇编中的所有类

Ale*_*lex 98 .net c# class-structure

我想输出(以编程方式 - C#)我的程序集中所有类的列表.

任何提示或示例代码如何做到这一点?反射?

Jon*_*eet 142

使用Assembly.GetTypes.例如:

Assembly mscorlib = typeof(string).Assembly;
foreach (Type type in mscorlib.GetTypes())
{
    Console.WriteLine(type.FullName);
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*rin 97

我只想补充Jon的例子.要获得对自己程序集的引用,可以使用:

Assembly myAssembly = Assembly.GetExecutingAssembly();
Run Code Online (Sandbox Code Playgroud)

System.Reflection 命名空间.

如果要检查没有引用的程序集,可以使用以下任一方法:

Assembly assembly = Assembly.ReflectionOnlyLoad(fullAssemblyName);
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);
Run Code Online (Sandbox Code Playgroud)

如果您打算在找到之后实例化您的类型:

Assembly assembly = Assembly.Load(fullAssemblyName);
Assembly assembly = Assembly.LoadFrom(fileName);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Assembly类文档.

一旦你有了Assembly对象的引用,就可以assembly.GetTypes()像Jon已经演示的那样使用了.

  • 最简单的方法是使用`typeof`和你知道在该程序集中的类型,然后使用`Assembly`属性,如我的例子中所示. (13认同)
  • 如果你想引用一个程序集,比如你的解决方案中的abc.dll,如果你可以硬编码dll名称,另一种引用程序集的方法是:`Assembly assembly = Assembly.Load("abc");` (2认同)