diff --git a/sample/ODataNewtonsoftJsonSample/Startup.cs b/sample/ODataNewtonsoftJsonSample/Startup.cs
index 3fa31f287..df41859f6 100644
--- a/sample/ODataNewtonsoftJsonSample/Startup.cs
+++ b/sample/ODataNewtonsoftJsonSample/Startup.cs
@@ -25,19 +25,17 @@ public Startup(IConfiguration configuration)
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
- services.AddControllers();
-
- services.AddOData(opt => opt.Select().Filter().AddModel("odata", GetEdmModel())).AddNewtonsoftJson(
- options =>
- {
- options.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
- options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
- //options.SerializerSettings.ContractResolver = WebApiJsonResolver.Instance;
- });
-
- // You can also add the converter one by one using followings:
- //services.AddControllers().AddNewtonsoftJson(
- // opt => opt.SerializerSettings.Converters.Add(new JDynamicTypeWrapperConverter()));
+ services.AddControllers()
+ .AddOData(opt => opt.Select().Filter().AddModel("odata", GetEdmModel()))
+ .AddODataNewtonsoftJson()
+ //.AddNewtonsoftJson(
+ //options =>
+ //{
+ // options.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
+ // options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
+ // //options.SerializerSettings.ContractResolver = WebApiJsonResolver.Instance;
+ //})
+ ;
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JDynamicTypeWrapperConverter.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JDynamicTypeWrapperConverter.cs
index 64e63660b..675b01d80 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JDynamicTypeWrapperConverter.cs
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JDynamicTypeWrapperConverter.cs
@@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.OData.NewtonsoftJson
///
/// Represents a custom to serialize instances to JSON.
///
- public class JDynamicTypeWrapperConverter : JsonConverter
+ internal class JDynamicTypeWrapperConverter : JsonConverter
{
///
/// Determines whether this instance can convert the specified type.
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JPageResultValueConverter.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JPageResultValueConverter.cs
index 760df162f..09117b80c 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JPageResultValueConverter.cs
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JPageResultValueConverter.cs
@@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.OData.NewtonsoftJson
///
/// Represents a custom to serialize instances to JSON.
///
- public class JPageResultValueConverter : JsonConverter
+ internal class JPageResultValueConverter : JsonConverter
{
///
/// Determines whether this instance can convert the specified type.
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSelectExpandWrapperConverter.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSelectExpandWrapperConverter.cs
index 186780ae0..abfb86cd4 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSelectExpandWrapperConverter.cs
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSelectExpandWrapperConverter.cs
@@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.OData.NewtonsoftJson
///
/// Represents a custom to serialize instances to JSON.
///
- public class JSelectExpandWrapperConverter : JsonConverter
+ internal class JSelectExpandWrapperConverter : JsonConverter
{
private Func _mapperProvider;
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSingleResultValueConverter.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSingleResultValueConverter.cs
index af9101a00..ab26e6534 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSingleResultValueConverter.cs
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JSingleResultValueConverter.cs
@@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.OData.NewtonsoftJson
///
/// Represents a custom to serialize instances to JSON.
///
- public class JSingleResultValueConverter : JsonConverter
+ internal class JSingleResultValueConverter : JsonConverter
{
///
/// Determines whether this instance can convert the specified type.
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JsonPropertyNameMapper.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JsonPropertyNameMapper.cs
index 03003b884..c29042533 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JsonPropertyNameMapper.cs
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/JsonPropertyNameMapper.cs
@@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.OData.NewtonsoftJson
///
/// Edm Property name mapper.
///
- public class JsonPropertyNameMapper : IPropertyMapper
+ internal class JsonPropertyNameMapper : IPropertyMapper
{
private IEdmModel _model;
private IEdmStructuredType _type;
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/Microsoft.AspNetCore.OData.NewtonsoftJson.xml b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/Microsoft.AspNetCore.OData.NewtonsoftJson.xml
index 9bacfa307..badfc7eb3 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/Microsoft.AspNetCore.OData.NewtonsoftJson.xml
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/Microsoft.AspNetCore.OData.NewtonsoftJson.xml
@@ -154,34 +154,40 @@
The given property name.
The mapped property name.
-
+
- Extension methods for adding OData Json converter to Newtonsoft.Json to .
+ Extension methods for adding OData Json converter to Newtonsoft.Json to and .
-
+
Configures Newtonsoft.Json using OData Json converter.
- The OData builder.
- The .
+ The Mvc builder.
+ The .
-
+
Configures Newtonsoft.Json using OData Json converter.
- The OData builder.
- Callback to configure .
- The .
+ The Mvc builder.
+ The mapper provider.
+ The .
+
+
+
+ Configures Newtonsoft.Json using OData Json converter.
+
+ The Mvc core builder.
+ The .
-
+
Configures Newtonsoft.Json using OData Json converter.
- The OData builder.
- Callback to configure .
- The property mapper provider.
- The .
+ The Mvc core builder.
+ The mapper provider.
+ The .
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftJsonMvcBuilderExtensions.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftJsonMvcBuilderExtensions.cs
new file mode 100644
index 000000000..90b7e6fb4
--- /dev/null
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftJsonMvcBuilderExtensions.cs
@@ -0,0 +1,96 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+
+using System;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.OData.Query.Container;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.OData.Edm;
+
+namespace Microsoft.AspNetCore.OData.NewtonsoftJson
+{
+ ///
+ /// Extension methods for adding OData Json converter to Newtonsoft.Json to and .
+ ///
+ public static class ODataNewtonsoftJsonMvcBuilderExtensions
+ {
+ #region IMvcBuilder
+ ///
+ /// Configures Newtonsoft.Json using OData Json converter.
+ ///
+ /// The Mvc builder.
+ /// The .
+ public static IMvcBuilder AddODataNewtonsoftJson(this IMvcBuilder builder)
+ {
+ return builder.AddODataNewtonsoftJson(null);
+ }
+
+ ///
+ /// Configures Newtonsoft.Json using OData Json converter.
+ ///
+ /// The Mvc builder.
+ /// The mapper provider.
+ /// The .
+ public static IMvcBuilder AddODataNewtonsoftJson(this IMvcBuilder builder,
+ Func mapperProvider)
+ {
+ if (builder is null)
+ {
+ throw new ArgumentNullException(nameof(builder));
+ }
+
+ return builder.AddNewtonsoftJson(BuildSetupAction(mapperProvider));
+ }
+ #endregion
+
+ #region IMvcCoreBuilder
+ ///
+ /// Configures Newtonsoft.Json using OData Json converter.
+ ///
+ /// The Mvc core builder.
+ /// The .
+ public static IMvcCoreBuilder AddODataNewtonsoftJson(this IMvcCoreBuilder builder)
+ {
+ return builder.AddNewtonsoftJson(null);
+ }
+
+ ///
+ /// Configures Newtonsoft.Json using OData Json converter.
+ ///
+ /// The Mvc core builder.
+ /// The mapper provider.
+ /// The .
+ public static IMvcCoreBuilder AddODataNewtonsoftJson(this IMvcCoreBuilder builder,
+ Func mapperProvider)
+ {
+ if (builder is null)
+ {
+ throw new ArgumentNullException(nameof(builder));
+ }
+
+ return builder.AddNewtonsoftJson(BuildSetupAction(mapperProvider));
+ }
+ #endregion
+
+ private static Action BuildSetupAction(Func mapperProvider)
+ {
+ Action odataSetupAction = opt =>
+ {
+ if (mapperProvider is null)
+ {
+ opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter());
+ }
+ else
+ {
+ opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter(mapperProvider));
+ }
+
+ opt.SerializerSettings.Converters.Add(new JDynamicTypeWrapperConverter());
+ opt.SerializerSettings.Converters.Add(new JPageResultValueConverter());
+ opt.SerializerSettings.Converters.Add(new JSingleResultValueConverter());
+ };
+
+ return odataSetupAction;
+ }
+ }
+}
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftServiceCollectionExtensions.cs b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftServiceCollectionExtensions.cs
deleted file mode 100644
index a8b67ce2c..000000000
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/ODataNewtonsoftServiceCollectionExtensions.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-
-using System;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.OData.Abstracts;
-using Microsoft.AspNetCore.OData.Query.Container;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.OData.Edm;
-
-namespace Microsoft.AspNetCore.OData.NewtonsoftJson
-{
- ///
- /// Extension methods for adding OData Json converter to Newtonsoft.Json to .
- ///
- public static class ODataNewtonsoftServiceCollectionExtensions
- {
- ///
- /// Configures Newtonsoft.Json using OData Json converter.
- ///
- /// The OData builder.
- /// The .
- public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder)
- {
- return builder.AddNewtonsoftJson(opt => { });
- }
-
- ///
- /// Configures Newtonsoft.Json using OData Json converter.
- ///
- /// The OData builder.
- /// Callback to configure .
- /// The .
- public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder, Action setupAction)
- {
- return builder.AddNewtonsoftJson(setupAction, null);
- }
-
- ///
- /// Configures Newtonsoft.Json using OData Json converter.
- ///
- /// The OData builder.
- /// Callback to configure .
- /// The property mapper provider.
- /// The .
- public static IODataBuilder AddNewtonsoftJson(this IODataBuilder builder, Action setupAction,
- Func mapperProvider)
- {
- if (builder is null)
- {
- throw new ArgumentNullException(nameof(builder));
- }
-
- if (setupAction is null)
- {
- throw new ArgumentNullException(nameof(setupAction));
- }
-
- Action odataSetupAction = opt =>
- {
- setupAction(opt);
-
- if (mapperProvider is null)
- {
- opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter());
- }
- else
- {
- opt.SerializerSettings.Converters.Add(new JSelectExpandWrapperConverter(mapperProvider));
- }
-
- opt.SerializerSettings.Converters.Add(new JDynamicTypeWrapperConverter());
- opt.SerializerSettings.Converters.Add(new JPageResultValueConverter());
- opt.SerializerSettings.Converters.Add(new JSingleResultValueConverter());
- };
-
- builder.Services.AddControllers().AddNewtonsoftJson(odataSetupAction);
- return builder;
- }
- }
-}
diff --git a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/PublicAPI.Unshipped.txt b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/PublicAPI.Unshipped.txt
index 2427e7c0a..8a2ffffcc 100644
--- a/src/Microsoft.AspNetCore.OData.NewtonsoftJson/PublicAPI.Unshipped.txt
+++ b/src/Microsoft.AspNetCore.OData.NewtonsoftJson/PublicAPI.Unshipped.txt
@@ -1,28 +1,5 @@
-Microsoft.AspNetCore.OData.NewtonsoftJson.JDynamicTypeWrapperConverter
-Microsoft.AspNetCore.OData.NewtonsoftJson.JDynamicTypeWrapperConverter.JDynamicTypeWrapperConverter() -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JPageResultValueConverter
-Microsoft.AspNetCore.OData.NewtonsoftJson.JPageResultValueConverter.JPageResultValueConverter() -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter
-Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter.JSelectExpandWrapperConverter() -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter.JSelectExpandWrapperConverter(System.Func mapperProvider) -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JSingleResultValueConverter
-Microsoft.AspNetCore.OData.NewtonsoftJson.JSingleResultValueConverter.JSingleResultValueConverter() -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JsonPropertyNameMapper
-Microsoft.AspNetCore.OData.NewtonsoftJson.JsonPropertyNameMapper.JsonPropertyNameMapper(Microsoft.OData.Edm.IEdmModel model, Microsoft.OData.Edm.IEdmStructuredType type) -> void
-Microsoft.AspNetCore.OData.NewtonsoftJson.JsonPropertyNameMapper.MapProperty(string propertyName) -> string
-Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftServiceCollectionExtensions
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JDynamicTypeWrapperConverter.CanConvert(System.Type objectType) -> bool
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JDynamicTypeWrapperConverter.ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) -> object
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JDynamicTypeWrapperConverter.WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) -> void
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JPageResultValueConverter.CanConvert(System.Type objectType) -> bool
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JPageResultValueConverter.ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) -> object
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JPageResultValueConverter.WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) -> void
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter.CanConvert(System.Type objectType) -> bool
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter.ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) -> object
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSelectExpandWrapperConverter.WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) -> void
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSingleResultValueConverter.CanConvert(System.Type objectType) -> bool
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSingleResultValueConverter.ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) -> object
-override Microsoft.AspNetCore.OData.NewtonsoftJson.JSingleResultValueConverter.WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) -> void
-static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftServiceCollectionExtensions.AddNewtonsoftJson(this Microsoft.AspNetCore.OData.Abstracts.IODataBuilder builder) -> Microsoft.AspNetCore.OData.Abstracts.IODataBuilder
-static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftServiceCollectionExtensions.AddNewtonsoftJson(this Microsoft.AspNetCore.OData.Abstracts.IODataBuilder builder, System.Action setupAction) -> Microsoft.AspNetCore.OData.Abstracts.IODataBuilder
-static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftServiceCollectionExtensions.AddNewtonsoftJson(this Microsoft.AspNetCore.OData.Abstracts.IODataBuilder builder, System.Action setupAction, System.Func mapperProvider) -> Microsoft.AspNetCore.OData.Abstracts.IODataBuilder
\ No newline at end of file
+Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftJsonMvcBuilderExtensions
+static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftJsonMvcBuilderExtensions.AddODataNewtonsoftJson(this Microsoft.Extensions.DependencyInjection.IMvcBuilder builder) -> Microsoft.Extensions.DependencyInjection.IMvcBuilder
+static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftJsonMvcBuilderExtensions.AddODataNewtonsoftJson(this Microsoft.Extensions.DependencyInjection.IMvcBuilder builder, System.Func mapperProvider) -> Microsoft.Extensions.DependencyInjection.IMvcBuilder
+static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftJsonMvcBuilderExtensions.AddODataNewtonsoftJson(this Microsoft.Extensions.DependencyInjection.IMvcCoreBuilder builder) -> Microsoft.Extensions.DependencyInjection.IMvcCoreBuilder
+static Microsoft.AspNetCore.OData.NewtonsoftJson.ODataNewtonsoftJsonMvcBuilderExtensions.AddODataNewtonsoftJson(this Microsoft.Extensions.DependencyInjection.IMvcCoreBuilder builder, System.Func mapperProvider) -> Microsoft.Extensions.DependencyInjection.IMvcCoreBuilder
\ No newline at end of file