#35 hack

CSharp · Console

/Program.cs

using System;
using JsonSubTypes;
using Newtonsoft.Json;

namespace subTypesIssue
{
    public class Program
    {
        public static void Main()
        {
      
            var input = new SomeInteger {Value = 42};
            var json = JsonConvert.SerializeObject(input);

            Console.WriteLine(json);
			
            var result = JsonConvert.DeserializeObject<IResult>(json);

            Console.WriteLine(result);
        }
    }
			
	[JsonConverter(typeof(JsonSubtypes), "Type")]	
	[JsonSubtypes.KnownSubType(typeof(Some<>), "Some")]												
	public interface IResult
    {
		string Type { get;}
    }

	public class SomeInteger: Some<int> {
		public override string ResultType { get { return "SomeInteger"; }} 
		
	}

	public class SomeText: Some<string> {
		public override string ResultType { get { return "SomeText"; }} 
		
	}

	[JsonConverter(typeof(JsonSubtypes), "ResultType")]
	//[JsonSubtypes.KnownSubType(typeof(SomeInteger), "SomeInteger")]
	//[JsonSubtypes.KnownSubType(typeof(SomeText), "SomeText")]
	public abstract class Some<T> : IResult
	{
	
		public string Type { get { return "Some"; }} 
		public abstract string ResultType { get; }
		public T Value { get; set; }
	}
}
;