public static void Main()
Console.WriteLine($"{Parse<int>("1")}");
Console.WriteLine($"{Parse<decimal>("1.3200056")}");
Console.WriteLine($"{Parse<string>("just a string")}");
Console.WriteLine($"{Parse<C1>("{\"P1\": \"a string\", \"P2\": 3}")}");
public string P1 { get; set; }
public int P2 { get; set; }
public override string ToString()
return $"P1: \"{P1}\" - P2: {P2}";
public static T Parse<T>(string val)
if (typeof(T) == typeof(string) || typeof(T).IsValueType)
return (T)Convert.ChangeType(val, typeof(T));
return JsonSerializer.Deserialize<T>(val);