public virtual IEnumerable <IMemberInfo> GetMembers() { if (SystemType != null) { if (IsEnum) { foreach (var item in SystemType.GetFields(BindingFlags.Public | BindingFlags.Static)) { if (item == null) { continue; } yield return(new SystemFieldMemberInfo(item)); } } else { foreach (var item in SystemType.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (item == null) { continue; } yield return(new SystemFieldMemberInfo(item)); } foreach (var item in SystemType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { yield return(new SystemPropertyMemberInfo(item)); } foreach (var item in SystemType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (item.IsSpecialName && (item.Name.StartsWith("set_") || item.Name.StartsWith("get_"))) { continue; } yield return(new SystemMethodMemberInfo(item)); } } } }