如何获取解决方案项目中的所有类型?

How to get all types in solution projects?

我有一个解决方案和多个 .net 核心项目。

WebApi 项目引用了 Business,但没有引用 Data 项目。所以我想获得实现 IMyInterface 的解决方案中的所有类型。所有项目都有 类 实现 IMyInterface。我要全部找到。

我在 WebApi 项目中调用以下代码:

        var m = AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(name => name.GetTypes())
            .Where(type => typeof(IMyInterface).IsAssignableFrom(type))
            .ToList();

但未找到类型。

我怎样才能找到?

你应该得到这样的所有组装项目

public Assembly[] GetAssemblies()
{
      var dataAssembly = typeof(AnClassInDataLayer).Assembly;
      var businessAssembly = typeof(ACLassInBusinessLayer).Assembly;
      var webApiAssembly = typeof(Startup).Assembly;
      return new Assembly[] { businessAssembly , dataAssembly, webApiAssembly  };
}

然后

var m = GetAssemblies()
        .SelectMany(name => name.GetTypes())// or .SelectMany(a => a.ExportedTypes)
        .Where(type => typeof(IMyInterface).IsAssignableFrom(type))
        .ToList();

更新

在 .Net Core 中,如果 WebApi 项目引用了 business 层,而 Business 层引用了 Data 层,那么在 WebApi 层中您可以访问到 Data