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

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

  • 项目(解决方案)
    • WebApi
    • 业务
    • 数据

WebApi项目引用Business,但不引用Data项目。因此,我想在实现IMyInterface的解决方案中获取所有类型。所有项目都有实现IMyInterface的类。我想找到所有的人。

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

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

但未找到类型。

如何找到?

a68434576 回答:如何获得解决方案项目中的所有类型?

您应该获得所有这样的组装项目

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层中,您可以访问{ {1}}层

本文链接:https://www.f2er.com/2512109.html

大家都在问