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

◆ ImportDataMembers()

void System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.ImportDataMembers ( )
inlineprivate

Definition at line 449 of file ClassDataContract.cs.

450 {
451 Type underlyingType = base.UnderlyingType;
456 MemberInfo[] array = (flag ? underlyingType.GetMembers(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) : underlyingType.GetMembers(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public));
457 foreach (MemberInfo memberInfo in array)
458 {
459 if (HasDataContract)
460 {
461 object[] array2 = memberInfo.GetCustomAttributes(typeof(DataMemberAttribute), inherit: false).ToArray();
462 if (array2 == null || array2.Length == 0)
463 {
464 continue;
465 }
466 if (array2.Length > 1)
467 {
469 }
470 DataMember dataMember = new DataMember(memberInfo);
472 {
473 PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
474 MethodInfo getMethod = propertyInfo.GetMethod;
475 if (getMethod != null && IsMethodOverriding(getMethod))
476 {
477 continue;
478 }
479 MethodInfo setMethod = propertyInfo.SetMethod;
480 if (setMethod != null && IsMethodOverriding(setMethod))
481 {
482 continue;
483 }
484 if (getMethod == null)
485 {
487 }
489 {
491 }
492 if (getMethod.GetParameters().Length != 0)
493 {
495 }
496 }
497 else if (!(memberInfo is FieldInfo))
498 {
500 }
501 DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)array2[0];
502 if (dataMemberAttribute.IsNameSetExplicitly)
503 {
504 if (dataMemberAttribute.Name == null || dataMemberAttribute.Name.Length == 0)
505 {
507 }
509 }
510 else
511 {
513 }
514 dataMember.Name = DataContract.EncodeLocalName(dataMember.Name);
515 dataMember.IsNullable = DataContract.IsTypeNullable(dataMember.MemberType);
517 if (dataMemberAttribute.IsRequired && base.IsReference)
518 {
519 DataContractCriticalHelper.ThrowInvalidDataContractException(System.SR.Format(System.SR.IsRequiredDataMemberOnIsReferenceDataContractType, DataContract.GetClrTypeFullName(memberInfo.DeclaringType), memberInfo.Name, true), underlyingType);
520 }
524 continue;
525 }
526 if (!flag)
527 {
530 if ((fieldInfo == null && propertyInfo2 == null) || (fieldInfo != null && fieldInfo.IsInitOnly))
531 {
532 continue;
533 }
534 object[] array3 = memberInfo.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), inherit: false).ToArray();
535 if (array3 != null && array3.Length != 0)
536 {
537 if (array3.Length <= 1)
538 {
539 continue;
540 }
542 }
543 DataMember dataMember2 = new DataMember(memberInfo);
544 if (propertyInfo2 != null)
545 {
546 MethodInfo getMethod2 = propertyInfo2.GetGetMethod();
547 if (getMethod2 == null || IsMethodOverriding(getMethod2) || getMethod2.GetParameters().Length != 0)
548 {
549 continue;
550 }
552 if (setMethod2 == null)
553 {
555 {
556 continue;
557 }
558 }
559 else if (!setMethod2.IsPublic || IsMethodOverriding(setMethod2))
560 {
561 continue;
562 }
563 }
564 dataMember2.Name = DataContract.EncodeLocalName(memberInfo.Name);
565 dataMember2.IsNullable = DataContract.IsTypeNullable(dataMember2.MemberType);
567 continue;
568 }
570 if (!((!IsKnownSerializableType(underlyingType)) ? (fieldInfo2 != null && !fieldInfo2.IsNotSerialized) : CanSerializeMember(fieldInfo2)))
571 {
572 continue;
573 }
574 DataMember dataMember3 = new DataMember(memberInfo);
575 dataMember3.Name = DataContract.EncodeLocalName(memberInfo.Name);
576 object[] customAttributes = fieldInfo2.GetCustomAttributes(Globals.TypeOfOptionalFieldAttribute, inherit: false);
577 if (customAttributes == null || customAttributes.Length == 0)
578 {
579 if (base.IsReference)
580 {
581 DataContractCriticalHelper.ThrowInvalidDataContractException(System.SR.Format(System.SR.NonOptionalFieldMemberOnIsReferenceSerializableType, DataContract.GetClrTypeFullName(memberInfo.DeclaringType), memberInfo.Name, true), underlyingType);
582 }
584 }
585 dataMember3.IsNullable = DataContract.IsTypeNullable(dataMember3.MemberType);
587 }
588 if (list.Count > 1)
589 {
590 list.Sort(DataMemberComparer.Singleton);
591 }
594 _members = list;
595 }
virtual ? MethodInfo GetMethod
virtual ? MethodInfo SetMethod
static void CheckAndAddMember(List< DataMember > members, DataMember memberContract, Dictionary< string, DataMember > memberNamesTable)
DataContractCriticalHelper([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors|DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods|DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.PublicProperties)] Type type)
static void ThrowInvalidDataContractException(string message, Type type)
DataContract(DataContractCriticalHelper helper)
static string TooManyDataMembers
Definition SR.cs:280
static string InvalidDataMemberName
Definition SR.cs:142
static string NoGetMethodForProperty
Definition SR.cs:216
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string IsRequiredDataMemberOnIsReferenceDataContractType
Definition SR.cs:178
static string NoSetMethodForProperty
Definition SR.cs:218
static string TooManyIgnoreDataMemberAttributes
Definition SR.cs:284
static string InvalidMember
Definition SR.cs:154
static string NonOptionalFieldMemberOnIsReferenceSerializableType
Definition SR.cs:320
static string IndexedPropertyCannotBeSerialized
Definition SR.cs:118
Definition SR.cs:7

References System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper._isNonAttributedType, System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper._members, System.array, System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.CanSerializeMember(), System.Runtime.Serialization.ClassDataContract.CheckAndAddMember(), System.Reflection.MemberInfo.DeclaringType, System.Runtime.Serialization.Dictionary, System.Runtime.Serialization.DataContract.EncodeLocalName(), System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.EnsureIsReferenceImported(), System.SR.Format(), System.Runtime.Serialization.DataContract.GetClrTypeFullName(), System.Reflection.PropertyInfo.GetMethod, System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.HasDataContract, System.SR.IndexedPropertyCannotBeSerialized, System.SR.InvalidDataMemberName, System.SR.InvalidMember, System.Runtime.Serialization.ClassDataContract.IsKnownSerializableType(), System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.IsMethodOverriding(), System.SR.IsRequiredDataMemberOnIsReferenceDataContractType, System.Runtime.Serialization.DataContract.IsTypeNullable(), System.list, System.Threading.Interlocked.MemoryBarrier(), System.Reflection.MemberInfo.Name, System.SR.NoGetMethodForProperty, System.SR.NonOptionalFieldMemberOnIsReferenceSerializableType, System.SR.NoSetMethodForProperty, System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.SetIfGetOnlyCollection(), System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.SetIfMembersHaveConflict(), System.Reflection.PropertyInfo.SetMethod, System.Runtime.Serialization.ClassDataContract.DataMemberComparer.Singleton, System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(), System.SR.TooManyDataMembers, System.SR.TooManyIgnoreDataMemberAttributes, and System.Runtime.Serialization.Globals.TypeOfOptionalFieldAttribute.

Referenced by System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.ClassDataContractCriticalHelper(), and System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper.ClassDataContractCriticalHelper().