private static IEnumerable<MemberInfo> GetMembers_Helper(TypeInfo ti)
{
var members = ti.DeclaredMembers;
foreach (var member in members)
if (!IsBackingField(member))
yield return member;
var baseType = ti.BaseType;
var isObject = (baseType == objectType);
if (baseType != null && !isObject)
{
var baseTi = baseType.GetTypeInfo();
var baseMembers = GetMembers_Helper(baseTi).ToList();
foreach (var baseMember in baseMembers)
yield return baseMember;
}
}