Bạn có thể viết phương thức WriteLine của riêng bạn-
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());
}
Sử dụng nó như-
WriteLine(myObject);
Để viết một bộ sưu tập chúng ta có thể sử dụng-
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);
}
}
Phương pháp có thể trông giống như-
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());
}
}
Sử dụng if, else if
và kiểm tra giao diện, thuộc tính, loại cơ sở, v.v. và đệ quy (vì đây là phương pháp đệ quy) theo cách này chúng ta có thể đạt được một trình điều khiển đối tượng, nhưng chắc chắn là tẻ nhạt. Sử dụng công cụ nhảy đối tượng từ Mẫu LINQ của Microsoft sẽ tiết kiệm thời gian của bạn.