diff --git a/JsonSubTypes/JsonSubtypesByDiscriminatorValueConverter.cs b/JsonSubTypes/JsonSubtypesByDiscriminatorValueConverter.cs index 7922cf9..42af58f 100644 --- a/JsonSubTypes/JsonSubtypesByDiscriminatorValueConverter.cs +++ b/JsonSubTypes/JsonSubtypesByDiscriminatorValueConverter.cs @@ -27,7 +27,7 @@ namespace JsonSubTypes // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. - internal class JsonSubtypesByDiscriminatorValueConverter : JsonSubtypesConverter + public class JsonSubtypesByDiscriminatorValueConverter : JsonSubtypesConverter { [ThreadStatic] private static bool _isInsideWrite; [ThreadStatic] private static bool _allowNextWrite; @@ -37,13 +37,14 @@ internal class JsonSubtypesByDiscriminatorValueConverter : JsonSubtypesConverter private readonly Dictionary _supportedTypes = new Dictionary(); private readonly NullableDictionary _subTypeMapping; - internal JsonSubtypesByDiscriminatorValueConverter(Type baseType, string discriminatorProperty, + // this constructor is part of the public api since it's protected and this class is public + protected internal JsonSubtypesByDiscriminatorValueConverter(Type baseType, string discriminatorProperty, NullableDictionary subTypeMapping, bool serializeDiscriminatorProperty, bool addDiscriminatorFirst, Type fallbackType) : base(baseType, discriminatorProperty, fallbackType) { _serializeDiscriminatorProperty = serializeDiscriminatorProperty; _subTypeMapping = subTypeMapping; _addDiscriminatorFirst = addDiscriminatorFirst; - foreach (var type in _subTypeMapping.Entries()) + foreach (KeyValuePair type in _subTypeMapping.Entries()) { if (_supportedTypes.ContainsKey(type.Value)) { @@ -106,11 +107,11 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s _isInsideWrite = false; } - if (!_supportedTypes.TryGetValue(value.GetType(), out var supportedType)) + if (!_supportedTypes.TryGetValue(value.GetType(), out object supportedType)) { throw new JsonSerializationException("Impossible to serialize type: " + value.GetType().FullName + " because there is no registered mapping for the discriminator property"); } - var typeMappingPropertyValue = JToken.FromObject(supportedType, serializer); + JToken typeMappingPropertyValue = JToken.FromObject(supportedType, serializer); if (_addDiscriminatorFirst) { jsonObj.AddFirst(new JProperty(JsonDiscriminatorPropertyName, typeMappingPropertyValue)); diff --git a/JsonSubTypes/JsonSubtypesConverter.cs b/JsonSubTypes/JsonSubtypesConverter.cs index 80f436f..8765c98 100644 --- a/JsonSubTypes/JsonSubtypesConverter.cs +++ b/JsonSubTypes/JsonSubtypesConverter.cs @@ -24,18 +24,18 @@ namespace JsonSubTypes // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. - internal class JsonSubtypesConverter : JsonSubtypes + public class JsonSubtypesConverter : JsonSubtypes { private readonly Type _baseType; private readonly Type _fallbackType; - public JsonSubtypesConverter(Type baseType, Type fallbackType) : base() + internal JsonSubtypesConverter(Type baseType, Type fallbackType) : base() { _baseType = baseType; _fallbackType = fallbackType; } - public JsonSubtypesConverter(Type baseType, string jsonDiscriminatorPropertyName, Type fallbackType) : base(jsonDiscriminatorPropertyName) + internal JsonSubtypesConverter(Type baseType, string jsonDiscriminatorPropertyName, Type fallbackType) : base(jsonDiscriminatorPropertyName) { _baseType = baseType; _fallbackType = fallbackType;