< Summary

Information
Class: Elsa.Common.Serialization.SerializationTypeOptions
Assembly: Elsa.Common
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Serialization/SerializationTypeOptions.cs
Line coverage
100%
Covered lines: 39
Uncovered lines: 0
Coverable lines: 39
Total lines: 85
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
get_AliasTypeDictionary()100%11100%
get_TypeAliasDictionary()100%11100%
RegisterTypeAlias(...)100%11100%
RegisterLegacyTypeName(...)100%11100%
RegisterLegacySimpleAssemblyQualifiedName(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Serialization/SerializationTypeOptions.cs

#LineLine coverage
 1using System.Collections.ObjectModel;
 2using System.Dynamic;
 3using System.Text.Json;
 4using System.Text.Json.Nodes;
 5using Elsa.Extensions;
 6
 7namespace Elsa.Common.Serialization;
 8
 9/// <summary>
 10/// Options for serialization type identifiers.
 11/// </summary>
 12public class SerializationTypeOptions
 13{
 1001514    private readonly IDictionary<string, Type> _aliasTypeDictionary = new Dictionary<string, Type>(StringComparer.Ordina
 1001515    private readonly IDictionary<Type, string> _typeAliasDictionary = new Dictionary<Type, string>();
 16
 17    /// <summary>
 18    /// Initializes a new instance of the <see cref="SerializationTypeOptions"/> class.
 19    /// </summary>
 1001520    public SerializationTypeOptions()
 21    {
 1001522        AliasTypeDictionary = new ReadOnlyDictionary<string, Type>(_aliasTypeDictionary);
 1001523        TypeAliasDictionary = new ReadOnlyDictionary<Type, string>(_typeAliasDictionary);
 24
 1001525        RegisterTypeAlias(typeof(short), "Int16");
 1001526        RegisterTypeAlias(typeof(int), "Int32");
 1001527        RegisterTypeAlias(typeof(long), "Int64");
 1001528        RegisterLegacyTypeName(typeof(long), "Long");
 1001529        RegisterTypeAlias(typeof(float), "Single");
 1001530        RegisterTypeAlias(typeof(object), "Object");
 1001531        RegisterTypeAlias(typeof(string), "String");
 1001532        RegisterTypeAlias(typeof(bool), "Boolean");
 1001533        RegisterTypeAlias(typeof(decimal), "Decimal");
 1001534        RegisterTypeAlias(typeof(double), "Double");
 1001535        RegisterTypeAlias(typeof(byte[]), "ByteArray");
 1001536        RegisterTypeAlias(typeof(Guid), nameof(Guid));
 1001537        RegisterTypeAlias(typeof(DateTime), nameof(DateTime));
 1001538        RegisterTypeAlias(typeof(DateTimeOffset), nameof(DateTimeOffset));
 1001539        RegisterTypeAlias(typeof(TimeSpan), nameof(TimeSpan));
 1001540        RegisterTypeAlias(typeof(Stream), nameof(Stream));
 1001541        RegisterTypeAlias(typeof(ExpandoObject), "JSON");
 1001542        RegisterTypeAlias(typeof(JsonElement), nameof(JsonElement));
 1001543        RegisterTypeAlias(typeof(JsonNode), nameof(JsonNode));
 1001544        RegisterTypeAlias(typeof(JsonObject), nameof(JsonObject));
 1001545        RegisterTypeAlias(typeof(JsonArray), nameof(JsonArray));
 1001546        RegisterTypeAlias(typeof(IDictionary<string, string>), "StringDictionary");
 1001547        RegisterTypeAlias(typeof(IDictionary<string, object>), "ObjectDictionary");
 1001548        RegisterTypeAlias(typeof(Dictionary<string, string>), "StringMap");
 1001549        RegisterTypeAlias(typeof(Dictionary<string, object>), "ObjectMap");
 1001550    }
 51
 52    /// <summary>
 53    /// Gets aliases and legacy names keyed by identifier.
 54    /// </summary>
 1001555    public IDictionary<string, Type> AliasTypeDictionary { get; }
 56
 57    /// <summary>
 58    /// Gets preferred aliases keyed by type.
 59    /// </summary>
 1001560    public IDictionary<Type, string> TypeAliasDictionary { get; }
 61
 62    /// <summary>
 63    /// Registers a preferred serialization alias.
 64    /// </summary>
 65    public SerializationTypeOptions RegisterTypeAlias(Type type, string alias)
 66    {
 24074167        _aliasTypeDictionary[alias] = type;
 24074168        _typeAliasDictionary[type] = alias;
 24074169        return this;
 70    }
 71
 72    /// <summary>
 73    /// Registers a legacy serialization identifier for compatibility reads.
 74    /// </summary>
 75    public SerializationTypeOptions RegisterLegacyTypeName(Type type, string typeName)
 76    {
 1003977        _aliasTypeDictionary[typeName] = type;
 1003978        return this;
 79    }
 80
 81    /// <summary>
 82    /// Registers the type's simple assembly-qualified name as a legacy serialization identifier.
 83    /// </summary>
 2184    public SerializationTypeOptions RegisterLegacySimpleAssemblyQualifiedName(Type type) => RegisterLegacyTypeName(type,
 85}