private static void WriteUnifiedElement(
UnifiedElement elem, StringBuilder buffer, int depth) {
WriteTypeWithoutContent(elem, buffer, depth);
// write items of enumerable
var seq = elem as IEnumerable;
if (seq != null) {
foreach (var item in seq) {
ToStringRecursively(item, buffer, depth + 1);
}
Debug.Assert(
elem.GetType().GetProperties()
.Where(
prop =>
prop.Name.StartsWith("Unified")
|| prop.Name.StartsWith("IUnified"))
.Where(
prop =>
!IgnorePropertyNames.Contains(prop.Name))
.Where(
prop =>
prop.GetIndexParameters().Length == 0)
.Select(prop => prop.GetValue(elem, null)).Count
() == 0);
return;
}
// write properties without indexer
var values = elem.GetType().GetProperties()
.Where(prop => !IgnorePropertyNames.Contains(prop.Name))
.Where(prop => prop.GetIndexParameters().Length == 0)
.Select(prop => prop.GetValue(elem, null));
foreach (var value in values) {
ToStringRecursively(value, buffer, depth + 1);
}
}