Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从库程序集获取类型_C#_Asp.net Core_.net Core_Mediatr - Fatal编程技术网

C# 从库程序集获取类型

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

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

  • 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());  

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

您不应该移动或删除该类