首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MediatR设置ServiceStack

用MediatR设置ServiceStack
EN

Stack Overflow用户
提问于 2021-09-10 06:15:41
回答 1查看 191关注 0票数 1

也许我搞错了,但是下面是MediatRServiceStacks容器配置中的注册:

代码语言:javascript
复制
public override void Configure(Container container)
{
    SetConfig(new HostConfig { DebugMode = true });

    var mediator = new Mediator(x => x.CreateInstance());
    container.Register<IMediator>(mediator);
    
    // This resolves
    var mediatorInstance = container.Resolve<IMediator>();
    container.Register(c => new MyService(mediatorInstance));
}

在ServiceStack API服务方法中,如果这被调用

代码语言:javascript
复制
_mediator.Send(command);

然后返回错误:

"ErrorCode": "MemberAccessException", "Message": "Cannot create an abstract class."

这句话的原因似乎是:

代码语言:javascript
复制
var mediator = new Mediator(x => x.CreateInstance());

MediatR为不同的容器提供扩展库,但不为ServcieStack (FunQ或SimpleContainer)提供扩展库。因此,我不知道如何正确设置MediatR。

目前,我使用的是ServiceStack v5.10.4 (最新版本: 5.12.0)和MediatR v5.1.0 (最新版本: 9.0.0)和.NET Framework4.5。

EN

回答 1

Stack Overflow用户

发布于 2021-09-10 09:54:36

既然MediatR有一个ASP.NET核心的IOC示例,我就坚持这样做,即:

如果您使用的是ASP.NET核心,那么您可以跳过配置,使用MediatR的MediatR.Extensions.Microsoft.DependencyInjection包,其中包括一个IServiceCollection.AddMediatR(程序集)扩展方法,允许您在给定的程序集中注册所有处理程序和预/后处理器。

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
  services.AddMvc();

  services.AddMediatR(typeof(Startup));
}

ServiceStack的IOC将自动退却解决ASP.NET核心的IOC中的任何依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69128005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档