从类库中枚举控制台应用程序中的类型

时间:2016-07-01 09:23:07

标签: c# .net dll console-application .net-assembly

最初让我们考虑相反的情况。如果我想枚举我在控制台应用程序中引用的程序集中的所有类型,我可以这样做

var assemblies = Directory.EnumerateFiles(
                     Directory.GetCurrentDirectory(), 
                     "MyNamespace.*.dll",
                     SearchOption.TopDirectoryOnly)
                .Select(Assembly.LoadFrom)
                .SelectMany(x => x.GetTypes())
                .ToList();

如此直截了当。我需要做相反的操作。假设我正在运行一个Console应用程序并引用类库MyClassLibrary,我想在我的控制台应用程序中将所有类型都放在MyClassLibrary中的函数中。问题是控制台应用程序不生成dll个文件,它们只输出exe个文件。有没有办法阅读类型?

2 个答案:

答案 0 :(得分:1)

您可以使用Assembly.GetEntryAssembly

Assembly.GetEntryAssembly().GetTypes();

答案 1 :(得分:0)

.NET控制台应用程序的exe文件仍然是.NET程序集。它可以以相同的方式加载,但由于它已经加载,这有点无意义。

您可以使用AppDomain.CurrentDomain.GetAssemblies()来获取当前App域中的所有已加载程序集(以及在控制台应用程序中 - 除非您创建另一个 - 只有一个),而不是浏览文件。