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

◆ GetFieldTokenNoLock()

int System.Reflection.Emit.ModuleBuilder.GetFieldTokenNoLock ( FieldInfo field)
inlineprivate

Definition at line 1065 of file ModuleBuilder.cs.

1066 {
1067 if (field == null)
1068 {
1069 throw new ArgumentNullException("field");
1070 }
1071 int num = 0;
1073 if (field is FieldBuilder fieldBuilder)
1074 {
1075 if (field.DeclaringType != null && field.DeclaringType.IsGenericType)
1076 {
1077 int length;
1078 byte[] signature = SignatureHelper.GetTypeSigToken(this, field.DeclaringType).InternalGetSignature(out length);
1080 return GetMemberRef(this, tokenFromTypeSpec, fieldBuilder.MetadataToken);
1081 }
1082 if (fieldBuilder.Module.Equals(this))
1083 {
1084 return fieldBuilder.MetadataToken;
1085 }
1086 if (field.DeclaringType == null)
1087 {
1088 throw new InvalidOperationException(SR.InvalidOperation_CannotImportGlobalFromDifferentModule);
1089 }
1091 return GetMemberRef(field.ReflectedType.Module, tokenFromTypeSpec, fieldBuilder.MetadataToken);
1092 }
1093 if (field is RuntimeFieldInfo runtimeField)
1094 {
1095 if (field.DeclaringType == null)
1096 {
1097 throw new InvalidOperationException(SR.InvalidOperation_CannotImportGlobalFromDifferentModule);
1098 }
1099 if (field.DeclaringType != null && field.DeclaringType.IsGenericType)
1100 {
1101 int length2;
1102 byte[] signature2 = SignatureHelper.GetTypeSigToken(this, field.DeclaringType).InternalGetSignature(out length2);
1104 return GetMemberRefOfFieldInfo(tokenFromTypeSpec, field.DeclaringType.GetTypeHandleInternal(), runtimeField);
1105 }
1107 return GetMemberRefOfFieldInfo(tokenFromTypeSpec, field.DeclaringType.GetTypeHandleInternal(), runtimeField);
1108 }
1109 if (field is FieldOnTypeBuilderInstantiation { FieldInfo: var fieldInfo } fieldOnTypeBuilderInstantiation)
1110 {
1111 int length3;
1112 byte[] signature3 = SignatureHelper.GetTypeSigToken(this, field.DeclaringType).InternalGetSignature(out length3);
1114 return GetMemberRef(fieldInfo.ReflectedType.Module, tokenFromTypeSpec, fieldOnTypeBuilderInstantiation.MetadataToken);
1115 }
1117 SignatureHelper fieldSigHelper = SignatureHelper.GetFieldSigHelper(this);
1118 fieldSigHelper.AddArgument(field.FieldType, field.GetRequiredCustomModifiers(), field.GetOptionalCustomModifiers());
1119 int length4;
1120 byte[] signature4 = fieldSigHelper.InternalGetSignature(out length4);
1122 }
static int GetTokenFromTypeSpec(QCallModule pModule, byte[] signature, int length)
static int GetMemberRefOfFieldInfo(QCallModule module, int tkType, QCallTypeHandle declaringType, int tkField)
static int GetMemberRef(QCallModule module, QCallModule refedModule, int tr, int defToken)
static int GetMemberRefFromSignature(QCallModule module, int tr, string methodName, byte[] signature, int length)

References System.Reflection.Emit.SignatureHelper.GetFieldSigHelper(), System.Reflection.Emit.ModuleBuilder.GetMemberRef(), System.Reflection.Emit.ModuleBuilder.GetMemberRefFromSignature(), System.Reflection.Emit.ModuleBuilder.GetMemberRefOfFieldInfo(), System.Reflection.Emit.ModuleBuilder.GetTokenFromTypeSpec(), System.Reflection.Emit.SignatureHelper.GetTypeSigToken(), System.Reflection.Emit.ModuleBuilder.GetTypeTokenInternal(), System.SR.InvalidOperation_CannotImportGlobalFromDifferentModule, System.length, System.length2, and System.length3.

Referenced by System.Reflection.Emit.ModuleBuilder.GetFieldToken().