public static MemberInfo[] GetMembers(this TypeInfo typeInfo, BindingFlags bindingFlags)
{
Argument.IsNotNull("typeInfo", typeInfo);
var flattenHierarchy = ShouldFlattenHierarchy(bindingFlags);
var source = typeInfo.DeclaredMembers.ToList();
// TODO: This is a fix because static members are not included in FlattenHierarcy, remove when this is fixed in WinRT
if (flattenHierarchy)
{
var baseType = typeInfo.BaseType;
if ((baseType != null) && (baseType != typeof(object)))
{
source.AddRange(from member in GetMembers(baseType.GetTypeInfo(), bindingFlags)
select member);
}
}
return (from x in source
select x).ToArray();
}