Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs @ 17843

Last change on this file since 17843 was 17843, checked in by dpiringe, 3 years ago

#3026

  • removed property ConvertableType from all converters
  • removed the option to fixate or loosen the path of JsonItems (obsolete)
  • added a abstract formatter SymbolicRegressionSolutionFormatterBase as base formatter for ISymbolicRegressionSolution
  • unified the construction of exporter controls
  • code cleanup
File size: 1.1 KB
RevLine 
[17263]1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using HeuristicLab.Core;
7using HeuristicLab.Data;
8
[17284]9namespace HeuristicLab.JsonInterface {
[17281]10  public class EnumTypeConverter : BaseConverter {
[17394]11    public override int Priority => 1;
12
[17828]13    public override bool CanConvertType(Type t) =>
14      typeof(EnumValue<>).IsAssignableFrom(t) ||
[17843]15      (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(EnumValue<>));
[17828]16
[17407]17    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
[17394]18      ((dynamic)item).Value = Enum.Parse(
[17266]19        item.GetType().GenericTypeArguments.First(),
[17410]20        ((StringJsonItem)data).Value);
[17407]21   
22    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
[17263]23      object val = ((dynamic)value).Value;
24      Type enumType = val.GetType();
[17410]25      return new StringJsonItem() {
[17407]26        Name = value.ItemName,
[17433]27        Description = value.ItemDescription,
[17407]28        Value = Enum.GetName(enumType, val),
[17473]29        ConcreteRestrictedItems = Enum.GetNames(enumType)
[17828]30      };
[17263]31    }
32  }
33}
Note: See TracBrowser for help on using the repository browser.