我已经使用Microsoft.AspNet.OData(版本7.1.0)实现了REST API。该业务模型包含一个ObservableCollection,并且在使用ODataController时未进行序列化。
如果我使用Newtonsoft序列化业务模型,则所有属性都将按预期序列化。
我一直在寻找自定义序列化的方法,但找不到解决方法。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.JsonFormatter.MaxDepth = 2048;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
ODataModelBuilder builder = new ODataConventionModelBuilder();
var entitySet = builder.EntitySet<Product>("Products");
entitySet.EntityType.HasKey(entity => entity.RelationId);
config.UseCustomContainerBuilder(() => new MyContainerBuilder());
config.MapODataServiceRoute(
routeName: "odata",
routePrefix: null,
model: builder.GetEdmModel());
}
}
我的问题是:是否可以通过更改某些SerializerSettings使其起作用,还是必须自定义序列化?