从库程序集获取类型

get type from library assembly

我想用 MediatR 创建一个 .NET Core REST API。我的项目是

要设置依赖注入,我必须调用

services.AddMediatR(typeof(Startup));

Startup.cs(API项目)的ConfigureServices方法中。我的命令和查询来自不同的程序集(应用程序),因此我必须传入库程序集而不是 Startup。请看这个post

的答案

我的代码应该是这样的

services.AddMediatR(typeof(ApplicationAssembly));

但我不能直接传入 "Application"。当命令和查询来自库项目时,需要传递什么?


我通过从那个库 class 传递

解决了这个问题
services.AddMediatR(typeof(Application.Queries.GetUsersQuery));

我认为这是一个非常糟糕的方法,因为当这个 class 被移动或删除时,API 项目也需要修复。

因此,非常感谢任何更好的解决方案

如果我理解正确,您需要从程序集传递类型信息,而不是特定的 class 类型。

在扩展的 github project 中,您将在示例中看到这一行

..... or with an assembly:

services.AddMediatR(typeof(Startup).GetTypeInfo().Assembly);

我想这就是你要找的。
在您的情况下,代码将如下所示:

services.AddMediatR(typeof(GetUsersQuery).GetTypeInfo().Assembly);  

如果你想完全独立于类型那么你可以使用这样的东西

services.AddMediatR(AppDomain.Current.GetAssemblies());  

这将扫描应用程序域中加载的所有程序集。