从库程序集获取类型
get type from library assembly
我想用 MediatR 创建一个 .NET Core REST API。我的项目是
- 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());
这将扫描应用程序域中加载的所有程序集。
我想用 MediatR 创建一个 .NET Core REST API。我的项目是
- 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());
这将扫描应用程序域中加载的所有程序集。