关于如何在基于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
}