generated/runtime/Conversions/Instances/EnumConverter.cs

/*---------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
using System;

namespace Commvault.Powershell.Runtime.Json
{
    public sealed class EnumConverter : IJsonConverter
    {
        private readonly Type type;

        internal EnumConverter(Type type)
        {
            this.type = type ?? throw new ArgumentNullException(nameof(type));
        }

        public JsonNode ToJson(object value) => new JsonString(value.ToString());

        public object FromJson(JsonNode node)
        {
            if (node.Type == JsonType.Number)
            {
                return Enum.ToObject(type, (int)node);
            }

            return Enum.Parse(type, node.ToString(), ignoreCase: true);
        }
    }
}