using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Debug = System.Console;
namespace Equipment.Shared.Model
public class SimCard : Equipment.Shared.Model.SimCard
public SimCard() : base()
Debug.WriteLine("My SimCard created.");
public class TlsModelContractResolver : DefaultContractResolver
protected override JsonContract CreateContract(Type objectType)
JsonContract contract = base.CreateContract(objectType);
if (objectType == typeof(Equipment.Shared.Model.SimCard) )
contract.CreatedType = typeof(SimCard);
Debug.WriteLine("Simcard CreateType is updated");
contract.DefaultCreator = () => new SimCard();
contract.DefaultCreatorNonPublic = false;
public class SimCardConverter : CustomCreationConverter<Equipment.Shared.Model.SimCard>
public override bool CanConvert(Type objectType) { return typeof(Equipment.Shared.Model.SimCard) == objectType; }
public override Equipment.Shared.Model.SimCard Create(Type objectType) { return new SimCard(); }
public static void Test()
public static void TestResolver()
var resolver = new TlsModelContractResolver();
var settings = new JsonSerializerSettings
ContractResolver = resolver,
var simcard = JsonConvert.DeserializeObject<Equipment.Shared.Model.SimCard>("{}", settings);
Assert.AreEqual(simcard.GetType(), typeof(SimCard));
public static void TestConverter()
var settings = new JsonSerializerSettings
Converters = { new SimCardConverter() },
var simcard = JsonConvert.DeserializeObject<Equipment.Shared.Model.SimCard>("{}", settings);
Assert.AreEqual(simcard.GetType(), typeof(SimCard));
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");