// Token: 0x0600506D RID: 20589 RVA: 0x0011A9FC File Offset: 0x00118BFC
private static MemberInfo[] InternalGetSerializableMembers(RuntimeType type)
{
if (type.IsInterface)
{
return(new MemberInfo[0]);
}
if (!FormatterServices.CheckSerializable(type))
{
throw new SerializationException(Environment.GetResourceString("Serialization_NonSerType", new object[]
{
type.FullName,
type.Module.Assembly.FullName
}));
}
MemberInfo[] array = FormatterServices.GetSerializableMembers(type);
RuntimeType runtimeType = (RuntimeType)type.BaseType;
if (runtimeType != null && runtimeType != (RuntimeType)typeof(object))
{
RuntimeType[] array2 = null;
int num = 0;
bool parentTypes = FormatterServices.GetParentTypes(runtimeType, out array2, out num);
if (num > 0)
{
List <SerializationFieldInfo> list = new List <SerializationFieldInfo>();
for (int i = 0; i < num; i++)
{
runtimeType = array2[i];
if (!FormatterServices.CheckSerializable(runtimeType))
{
throw new SerializationException(Environment.GetResourceString("Serialization_NonSerType", new object[]
{
runtimeType.FullName,
runtimeType.Module.Assembly.FullName
}));
}
FieldInfo[] fields = runtimeType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
string namePrefix = parentTypes ? runtimeType.Name : runtimeType.FullName;
foreach (FieldInfo fieldInfo in fields)
{
if (!fieldInfo.IsNotSerialized)
{
list.Add(new SerializationFieldInfo((RuntimeFieldInfo)fieldInfo, namePrefix));
}
}
}
if (list != null && list.Count > 0)
{
MemberInfo[] array4 = new MemberInfo[list.Count + array.Length];
Array.Copy(array, array4, array.Length);
((ICollection)list).CopyTo(array4, array.Length);
array = array4;
}
}
}
return(array);
}