关于如何在基于dotnet核心1的dotnetcore上进行配置,EventFlow的例子非常有限,但在dotnet核心2中有所变化

有没有办法在没有Autofac的情况下使用EventFlow配置?

这里有讨论,最后的评论是关于我在这里问的同一件事,但没有答案

https://github.com/eventflow/EventFlow/issues/158

基本上我想找到一种方法来使用DI中的构建,例如

services.AddEventFlowOptions.New...


要么

var resolver = EventFlowOptions.New.UseDotnetCoreServices(services)...


或...你们用过的其他东西吗?

最佳答案

我用这个,它工作正常。它看起来像是将服务传递到EventFlow的IoC AuotFac中,并且将其包装。

如您所见,您将照常使用已知的ASP.NET Core API,以相同的方式进行注入,而无需更改Contollers等。

我唯一更改的是将void ConfigureServices更改为IServiceProvider ConfigureServices-我不确定这是否会真正影响任何东西,但它会起作用。

您将需要这些软件包


EventFlow.Aspnetcore.Middlewares;
EventFlow.AspNetCore.Extensions;
EventFlow.Autofac.Extensions;


Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        var containerBuilder = new ContainerBuilder();

        var container = EventFlowOptions.New
            .UseAutofacContainerBuilder(containerBuilder)
            .AddDefaults(EventFlowTestHelpers.Assembly)
            .AddAspNetCoreMetadataProviders();


        containerBuilder.Populate(services);

        return new AutofacServiceProvider(containerBuilder.Build());
    }


并且您需要使用该软件包提供的一些MiddleWare

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseMiddleware<CommandPublishMiddleware>();
        app.UseMvcWithDefaultRoute();//or whatever you are doing
    }

10-05 18:18