Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ InternalGetSerializableMembers()

static FieldInfo[] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers ( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type)
inlinestaticprivate

Definition at line 16 of file FormatterServices.cs.

17 {
18 if (type.IsInterface)
19 {
20 return Array.Empty<FieldInfo>();
21 }
22 if (!type.IsSerializable)
23 {
24 throw new SerializationException(System.SR.Format(System.SR.Serialization_NonSerType, type.FullName, type.Assembly.FullName));
25 }
27 Type baseType = type.BaseType;
28 if (baseType != null && baseType != typeof(object))
29 {
33 if (parentTypeCount > 0)
34 {
36 for (int i = 0; i < parentTypeCount; i++)
37 {
39 if (!baseType.IsSerializable)
40 {
41 throw new SerializationException(System.SR.Format(System.SR.Serialization_NonSerType, baseType.FullName, baseType.Module.Assembly.FullName));
42 }
43 FieldInfo[] fields = baseType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
44 string namePrefix = (parentTypes2 ? baseType.Name : baseType.FullName);
45 FieldInfo[] array2 = fields;
46 foreach (FieldInfo fieldInfo in array2)
47 {
48 if (!fieldInfo.IsNotSerialized)
49 {
50 list.Add(new SerializationFieldInfo(fieldInfo, namePrefix));
51 }
52 }
53 }
54 if (list != null && list.Count > 0)
55 {
56 FieldInfo[] array3 = new FieldInfo[list.Count + array.Length];
57 Array.Copy(array, array3, array.Length);
58 list.CopyTo(array3, array.Length);
59 array = array3;
60 }
61 }
62 }
63 return array;
64 }
static bool GetParentTypes(Type parentType, out Type[] parentTypes, out int parentTypeCount)
static FieldInfo[] GetSerializableFields([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.NonPublicFields)] Type type)
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string Serialization_NonSerType
Definition SR.cs:16
Definition SR.cs:7

References System.array, System.Array.Copy(), System.Runtime.Serialization.Dictionary, System.SR.Format(), System.Runtime.Serialization.FormatterServices.GetParentTypes(), System.Runtime.Serialization.FormatterServices.GetSerializableFields(), System.list, System.SR.Serialization_NonSerType, and System.type.

Referenced by System.Runtime.Serialization.FormatterServices.GetSerializableMembers().