Refactor PolymorphicObjectConverterFactory constructor
Separated dependency injection in PolymorphicObjectConverterFactory into explicit constructor. Added a default constructor for attribute usage, ensuring WellKnownTypeRegistry is initialized uniformly.
This commit is contained in:
parent
469d909ded
commit
42067c035c
|
|
@ -2,26 +2,45 @@ using System.Dynamic;
|
|||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Elsa.Expressions.Contracts;
|
||||
using Elsa.Expressions.Services;
|
||||
|
||||
namespace Elsa.Workflows.Serialization.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// A JSON converter factory that creates <see cref="PolymorphicObjectConverter"/> instances.
|
||||
/// </summary>
|
||||
public class PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownTypeRegistry) : JsonConverterFactory
|
||||
public class PolymorphicObjectConverterFactory : JsonConverterFactory
|
||||
{
|
||||
private readonly IWellKnownTypeRegistry _wellKnownTypeRegistry;
|
||||
|
||||
/// <summary>
|
||||
/// A JSON converter factory that creates <see cref="PolymorphicObjectConverter"/> instances.
|
||||
/// </summary>
|
||||
public PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownTypeRegistry)
|
||||
{
|
||||
_wellKnownTypeRegistry = wellKnownTypeRegistry;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Default constructor for use with attributes.
|
||||
/// </summary>
|
||||
public PolymorphicObjectConverterFactory()
|
||||
{
|
||||
_wellKnownTypeRegistry = WellKnownTypeRegistry.CreateDefault();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanConvert(Type typeToConvert)
|
||||
{
|
||||
if (typeToConvert.IsClass
|
||||
&& typeToConvert == typeof(object)
|
||||
|| typeToConvert == typeof(ExpandoObject)
|
||||
|| typeToConvert == typeof(Dictionary<string, object>))
|
||||
return true;
|
||||
|
||||
if (typeToConvert.IsInterface
|
||||
&& typeToConvert == typeof(IDictionary<string, object>))
|
||||
return true;
|
||||
|| typeToConvert == typeof(Dictionary<string, object>))
|
||||
return true;
|
||||
|
||||
if (typeToConvert.IsInterface
|
||||
&& typeToConvert == typeof(IDictionary<string, object>))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
@ -30,8 +49,8 @@ public class PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownT
|
|||
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (typeof(IDictionary<string, object>).IsAssignableFrom(typeToConvert))
|
||||
return new PolymorphicDictionaryConverter(options, wellKnownTypeRegistry);
|
||||
return new PolymorphicDictionaryConverter(options, _wellKnownTypeRegistry);
|
||||
|
||||
return new PolymorphicObjectConverter(wellKnownTypeRegistry);
|
||||
return new PolymorphicObjectConverter(_wellKnownTypeRegistry);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue