आप अपनी खुद की WriteLine विधि लिख सकते हैं-
public static void WriteLine<T>(T obj)
{
var t = typeof(T);
var props = t.GetProperties();
StringBuilder sb = new StringBuilder();
foreach (var item in props)
{
sb.Append($"{item.Name}:{item.GetValue(obj,null)}; ");
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
इसका उपयोग करें जैसे-
WriteLine(myObject);
एक संग्रह लिखने के लिए हम उपयोग कर सकते हैं-
var ifaces = t.GetInterfaces();
if (ifaces.Any(o => o.Name.StartsWith("ICollection")))
{
dynamic lst = t.GetMethod("GetEnumerator").Invoke(obj, null);
while (lst.MoveNext())
{
WriteLine(lst.Current);
}
}
विधि की तरह लग सकता है-
public static void WriteLine<T>(T obj)
{
var t = typeof(T);
var ifaces = t.GetInterfaces();
if (ifaces.Any(o => o.Name.StartsWith("ICollection")))
{
dynamic lst = t.GetMethod("GetEnumerator").Invoke(obj, null);
while (lst.MoveNext())
{
WriteLine(lst.Current);
}
}
else if (t.GetProperties().Any())
{
var props = t.GetProperties();
StringBuilder sb = new StringBuilder();
foreach (var item in props)
{
sb.Append($"{item.Name}:{item.GetValue(obj, null)}; ");
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
}
if, else if
इंटरफेस, एट्रिब्यूट्स, बेस टाइप इत्यादि का उपयोग करना और पुनरावर्तन (जैसा कि यह एक पुनरावर्ती विधि है) का उपयोग करके इस तरह से हम एक ऑब्जेक्ट डम्पर प्राप्त कर सकते हैं, लेकिन यह सुनिश्चित करने के लिए थकाऊ है। Microsoft के LINQ नमूना से ऑब्जेक्ट डम्पर का उपयोग करने से आपका समय बचेगा।