OData-已添加DefaultODataSerializerProvider构造函数
刚刚从Microsoft.AspNet.OData 5.9.0升级到6.0.0 DefaultODataSerializerProvider类现在有一个构造函数参数IServiceProviderOData-已添加DefaultODataSerializerProvider构造函数,odata,Odata,刚刚从Microsoft.AspNet.OData 5.9.0升级到6.0.0 DefaultODataSerializerProvider类现在有一个构造函数参数IServiceProvider var containerBuilder = new DefaultContainerBuilder(); config.UseCustomContainerBuilder(() => containerBuilder); config.Enab
var containerBuilder = new DefaultContainerBuilder();
config.UseCustomContainerBuilder(() => containerBuilder);
config.EnableDependencyInjection();
var serviceProvider = containerBuilder.BuildContainer();
var oDataSerializerProvider = new DefaultODataSerializerProvider(serviceProvider);
我有一个实现DefaultODataSerializerProvider的类NullSerializerProvider
这是向HttpConfiguration添加格式化程序。
e、 g
我的问题:
NullSerializerProvider要求提供实现IServiceProvider的类的实例。如何提供此功能?以下是有关OData依赖项注入的文档: 我花了整整一天的时间来讨论这些信息,并试图在Ninject周围创建我自己的IContainerBuilder,但运气不佳 我最终放弃了,让OData使用自己的DI容器,并将其与我对Ninject的使用分开。然后我意识到我可以创建DefaultContainerBuilder,并像定制容器生成器一样注册它。然后,我可以使用DefaultContainerBuilder获取IServiceProvider
var containerBuilder = new DefaultContainerBuilder();
config.UseCustomContainerBuilder(() => containerBuilder);
config.EnableDependencyInjection();
var serviceProvider = containerBuilder.BuildContainer();
var oDataSerializerProvider = new DefaultODataSerializerProvider(serviceProvider);
我也面临着这个问题,经过一天的研究,我找到了这个解决方案:
using Microsoft.Extensions.DependencyInjection;
var serviceProvider = new ServiceCollection().BuildServiceProvider() as IServiceProvider;
现在,您可以创建自己的SerializerProvider或DeserializerProvider,并使用以下方法:
var odataFormatters = ODataMediaTypeFormatters.Create(new DefaultODataSerializerProvider(serviceProvider), new JsonODataDeserializerProvider(serviceProvider));
config.Formatters.AddRange(odataFormatters);
希望能节省很多时间和头痛