using System.ComponentModel;
public static void Main()
Console.WriteLine($"Result: {Test<int>(int.MaxValue)}");
Console.WriteLine($"Result: {Test<DateTime>("2019--12-12")}");
Console.WriteLine($"Result: {Test<decimal>("0,02")}");
Console.WriteLine($"Result: {Test<decimal>("0.02")}");
static T Test<T>(object val){
TypeConverter tc = TypeDescriptor.GetConverter(typeof(T));
bool valid = tc.IsValid(val);
Console.WriteLine($"Valid: {valid}, value: {val}");
return (T)tc.ConvertFrom(val);