C# 从库程序集获取类型
我想用MediatR创建一个.NET Core REST API。我的项目是C# 从库程序集获取类型,c#,asp.net-core,.net-core,mediatr,C#,Asp.net Core,.net Core,Mediatr,我想用MediatR创建一个.NET Core REST API。我的项目是 API项目 包含命令、查询和管道行为的应用程序项目 要设置依赖项注入,我必须调用 services.AddMediatR(typeof(Startup)); 在Startup.cs(API项目)的ConfigureServices方法中。我的命令和查询来自不同的程序集(应用程序),因此我必须传入库程序集,而不是启动。请看这篇文章的答案 我的代码应该是 services.AddMediatR(typeof(App
- API项目
- 包含命令、查询和管道行为的应用程序项目
services.AddMediatR(typeof(Startup));
在Startup.cs(API项目)的ConfigureServices
方法中。我的命令和查询来自不同的程序集(应用程序),因此我必须传入库程序集,而不是启动。请看这篇文章的答案
我的代码应该是
services.AddMediatR(typeof(ApplicationAssembly));
但我不能只是通过“申请”。当命令和查询来自库项目时,需要传递什么
我通过从那个图书馆借一门课解决了这个问题
services.AddMediatR(typeof(Application.Queries.GetUsersQuery));
我认为这是一种非常糟糕的方法,因为当这个类被移动或删除时,API项目也需要得到修复
因此,任何更好的解决方案都受到高度赞赏如果我理解正确,您需要从程序集传递类型信息,而不是特定的类类型 在扩展的基础上,您将在示例中看到这一行 。。。。。或使用组件: AddMediatR(typeof(Startup).GetTypeInfo().Assembly) 我想这就是你要找的。
在您的情况下,代码将如下所示:
services.AddMediatR(typeof(GetUsersQuery).GetTypeInfo().Assembly);
如果你想完全独立于这个类型,那么你可以使用这样的东西
services.AddMediatR(AppDomain.Current.GetAssemblies());
这将扫描应用程序域中加载的所有程序集。您不应该移动或删除该类