using System;
using System.Collections.Generic;
using System.Linq;
public class MyClass
{
public string StrProp1 { get; set; }
public string StrProp2 { get; set; }
public int IntProp { get; set; }
public DateTime? DTNullableProp { get; set; }
public int? IntNullableProp { get; set; }
}
public class Test
{
public static void Main()
{
var o = new MyClass()
{
StrProp1 = "p1", StrProp2 = "p2",
IntProp = 2, IntNullableProp = null,
DTNullableProp = DateTime.Now
};
foreach (var kv in GetDictionary(o))
Console.WriteLine("o.{0} = {1}", kv.Key, kv.Value);
}
static Dictionary<string, string> GetDictionary(object o)
{
return o.GetType().GetProperties().ToDictionary(p => p.Name, p => p.GetValue(o)?.ToString());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgTXlDbGFzcwp7CiAgICBwdWJsaWMgc3RyaW5nIFN0clByb3AxIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgU3RyUHJvcDIgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIGludCBJbnRQcm9wIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBEYXRlVGltZT8gRFROdWxsYWJsZVByb3AgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIGludD8gSW50TnVsbGFibGVQcm9wIHsgZ2V0OyBzZXQ7IH0KfQoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIHZhciBvID0gbmV3IE15Q2xhc3MoKQogICAgICAgIHsKICAgICAgICAJU3RyUHJvcDEgPSAicDEiLCBTdHJQcm9wMiA9ICJwMiIsCiAgICAgICAgCUludFByb3AgPSAyLCBJbnROdWxsYWJsZVByb3AgPSBudWxsLAogICAgICAgIAlEVE51bGxhYmxlUHJvcCA9IERhdGVUaW1lLk5vdwogICAgICAgIH07CiAgICAgICAgZm9yZWFjaCAodmFyIGt2IGluIEdldERpY3Rpb25hcnkobykpCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJvLnswfSA9IHsxfSIsIGt2LktleSwga3YuVmFsdWUpOwogICAgfQoKICAgIHN0YXRpYyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBHZXREaWN0aW9uYXJ5KG9iamVjdCBvKQogICAgewogICAgICAgIHJldHVybiBvLkdldFR5cGUoKS5HZXRQcm9wZXJ0aWVzKCkuVG9EaWN0aW9uYXJ5KHAgPT4gcC5OYW1lLCBwID0+IHAuR2V0VmFsdWUobyk/LlRvU3RyaW5nKCkpOwogICAgfQp9