问题标签 [mediatr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在 ASP MVC 5 中将 MediatR 与 Autofac 一起使用?
作者提供了一个如何在使用Autofac的控制台应用程序中使用 MediatR 的示例:
我举了这个例子,并试图让它与 ASP MVC 5 和Autofac.Mvc5包一起工作:
当我运行 Web 应用程序时,我收到一个错误页面,告诉我ServiceLocationProvider
依赖项尚未注册。我究竟做错了什么?
我怀疑问题是由于我在调用后ServiceLocatorProvider
注册了实例- 在作者的示例中,该方法随后被调用,这要归功于. 不过,我不知道如何解决这个问题。Build
Build
Lazy<>
ninject - 如何在 Ninject 中装饰实现特定接口的所有绑定
我正在使用 Jimmy Bogard 的 Mediatr 并尝试在此处使用 pipleine 示例
我的问题是,尽管我可以像这样获得所有关闭的泛型类型
我不能用 MediatorPipeline 来装饰它们。
所以如果我使用 StructureMap 我可以使用这样的东西
我找不到如何使用 Ninject 实现它,因此当我的 Mediator 被调用时,它使用 Mediator 管道,然后到原始的 Handler
c# - 中介模式和简单注入器的逆变
这个问题源于我正在尝试为 MediatR 创建一个简单的注入器实现:https ://github.com/jbogard/MediatR/pull/14 。
我在尝试解决通用处理程序接口的实现时遇到了麻烦。考虑以下通知处理程序接口:
INotifcation
只是一个空的标记界面。
Pinged
我为(实现INotification
)事件定义了以下处理程序:
还有一个通用处理程序(注意这应该处理每个INotification
):
通过以下注册:
现在我期望:
解决这两个PingedHandler
问题PingedHandler2
。但它并没有解决,GenericHandler
因为它实现了INotificationHandler<INotification>
而不是INotificationHandler<Pinged>
. 我想知道是否有办法让 Simple Injector 搜索整个对象图并解决任何问题Pinged
。
我发现了 Steven 的一篇关于协方差和逆变的博客文章,但我无法让它适用于我的示例。
c# - Autofac 解析相同类型的多个实例
我的应用程序中有一个稍微修改过的Mediatr处理命令处理版本。我已经实现了一个 MediatorPipeline,它允许我拥有前处理器和后处理器。
我正在使用 autofac 注册我的预处理器,如下所示:
在运行时,我得到了重复的预处理器。我必须过滤删除重复项的集合。我不确定为什么会这样。如果我注释掉注册,我没有得到任何预处理器,这表明我没有在其他地方复制注册。
更新:这里有一些关于似乎被注册两次的类型的更多细节。各种类定义:
混凝土搬运工
命令类
命令界面
c# - Visual Studio 找不到 SingleInstanceFactory
我错过了一些东西,但不确定。
我已经包括using MediatR;
我正在尝试使用 Unity 注册类型:
但是 VS 告诉我它找不到SingleInstanceFactory
或MultiInstanceFactory
. 该项目的目标是 .NET 4.5.1,我正在使用最新的 Unity MediatR。
最新 MediatR,https://github.com/jbogard/MediatR/blob/master/src/MediatR/Mediator.cs
我只是从吉米给出的例子中复制过来的。
c# - AutofacInstanceContext.Current 为空,我不明白为什么
我正在开发一个 WCF 项目,其中我使用 Autofac 作为 IoC 容器,使用 MediatR 作为中介来执行我的请求和命令。
WCF 契约的“基础”实现将 的实例IMediator
作为依赖项,以将与每个请求关联的工作委托给关联的处理程序。我还有几个装饰器,我为授权和错误处理等基础实现堆叠起来。
正如Autofac 文档的这一页中所指定的,当您在服务实现上使用装饰器时,必须使用 aMultitenantServiceImplementationDataProvider
以满足 WCF 内部要求。不需要更多与多租户相关的内容,因此它只包括:
此外,在.svc
我指定了接口的限定名称中,因为它受 Autofac 支持,并且我在基本实现的顶部有装饰器。
现在,转到 MediatR。
MediatR 在收到请求时使用服务位置实例化适当的处理程序。更具体地说,它依赖于CSL。
没问题,因为 Autofac 提供了支持 CSL 的桥梁。
“棘手”部分依赖于我的处理程序作为依赖项这一事实,DbContext
我希望 Autofac 在每次 WCF 请求后将它们处理掉。
因此必须给定为特定请求创建的范围,因为根范围没有被释放,实例AutofacServiceLocator
也不会。DbContext
Autofac 为您提供了与ASP.NET MVCAutofacInstanceContext.Current
中等效的静态属性。
到目前为止一切顺利,以下是我注册该类的方式:AutofacDependencyResolver.RequestLifetimeScope
ServiceLocatorProvider
Mediator
它在我的开发盒上按预期工作,但我NullReferenceException
在暂存环境中得到了一个,我真的不知道在哪里寻找 - GoogleBing 没有给出相关结果。
只有与两种环境不同的东西:
- 我的盒子上的 HTTP 与登台环境上的 HTTPS。
debug
在暂存环境中,元素上的属性<system.web>
设置为 false。
就是这样......
.NET 框架和 4.5.2 一样。
有人有想法吗?谢谢!
c# - IAsyncRequests 是否必须在 DI 中注册
使用 MediatR,
必须IAsyncRequest<T>
在容器中注册。
我已经Unity
自动注册了所有内容,并且非常正确地抱怨我有多个绑定IAsyncRequest<bool>
。
所以我想我有两个选择,不注册IAsyncRequest<T>
或不自动注册IAsyncRequest<T>
,给他们命名注册。
我认为做前者是最简单的,我只是想知道是否有任何特殊原因将IAsyncRequest
注册到他们的具体实现。
c# - 使用 CQRS 处理调解器管道中的错误/异常?
我正在尝试按照Jimmy Bogard 的这篇文章来实现中介管道,这样我就可以使用前/后请求处理程序来做一些工作。从那篇文章的评论中,我来到了这个github gist。我还不太明白如何将所有这些联系起来,所以这是我的第一次尝试。仅供参考 - 我将 Autofac 用于 DI 和 Web Api 2。在 CQRS 之后,这是一个查询。
GetAccountRequestHandler:
这是显示 HttpGet 的当前 web api 2 控制器。
最后是依赖解析代码:
我正在进入 GetAccountRequestValidationHandler。但是,当验证失败(通过了 0 的 id)时,如何抛出异常或停止管道的执行?如何返回 .WithMessage?
c# - 使用 Autofac 的 DependencyInjectionConfig 中的 MediatR 问题
我在我的项目 MediatR 中使用。这就是我在我的服务类中所拥有的:
这是我的处理程序
这是我的模型课:
这就是我在依赖注入配置中写的:
它一直给我这个例外:
{"请求的服务'MediatR.IRequestHandler`2[[Service.DataContracts.UpdateAddressInformationCommand, Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[MediatR.Unit, MediatR, Version=2.0.0.0, Culture =neutral, PublicKeyToken=null]]' 尚未注册。为避免此异常,请注册提供服务的组件,使用 IsRegistered() 检查服务注册,或使用 ResolveOptional() 方法解决可选依赖项。 "}
有谁知道如何解决这个问题?
asp.net-web-api2 - CQRS ValidatorHandler 无法识别 FluentValidation 验证器?
我正在使用 Web Api 2、Autofac 和 MediatR (CQRS)。我有一个具有前置/后置请求处理程序的调解器管道。这一切都很好。我现在正在尝试连接 Validation 并用它来装饰管道。
这是我的 Autofac DI 代码:
这是验证器处理程序:
这是一个示例查询:
这是流利的验证处理程序:
这是请求处理程序:
最后是 Web Api 2 HttpGet 方法:
我在各处都设置了断点,当我到达这个端点时,我首先进入的是 GetAccountRequestValidationHandler。然后我进入 ValidatorHandler 的构造函数。问题是,构造函数的 IValidator[] 验证器参数始终为空。
我一定错过了通过 Autofac 进行流畅验证和注册的东西吗?任何帮助深表感谢。