Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
RtFieldInfo.cs
Go to the documentation of this file.
4
5namespace System.Reflection;
6
8{
10
12
13 private string m_name;
14
16
18
20 {
21 [MethodImpl(MethodImplOptions.AggressiveInlining)]
22 get
23 {
24 if ((m_invocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_INITIALIZED) == 0)
25 {
27 }
28 return m_invocationFlags;
29 }
30 }
31
33
34 public override string Name => m_name ?? (m_name = RuntimeFieldHandle.GetName(this));
35
36 public override int MetadataToken => RuntimeFieldHandle.GetToken(this);
37
39
41
42 public override Type FieldType
43 {
44 [MethodImpl(MethodImplOptions.AggressiveInlining)]
45 get
46 {
48 }
49 }
50
51 [MethodImpl(MethodImplOptions.NoInlining)]
53 {
54 Type declaringType = DeclaringType;
55 INVOCATION_FLAGS iNVOCATION_FLAGS = INVOCATION_FLAGS.INVOCATION_FLAGS_UNKNOWN;
56 if (declaringType != null && declaringType.ContainsGenericParameters)
57 {
58 iNVOCATION_FLAGS |= INVOCATION_FLAGS.INVOCATION_FLAGS_NO_INVOKE;
59 }
60 if (iNVOCATION_FLAGS == INVOCATION_FLAGS.INVOCATION_FLAGS_UNKNOWN)
61 {
62 if ((m_fieldAttributes & FieldAttributes.InitOnly) != 0)
63 {
64 iNVOCATION_FLAGS |= INVOCATION_FLAGS.INVOCATION_FLAGS_IS_CTOR;
65 }
66 if ((m_fieldAttributes & FieldAttributes.HasFieldRVA) != 0)
67 {
68 iNVOCATION_FLAGS |= INVOCATION_FLAGS.INVOCATION_FLAGS_IS_CTOR;
69 }
70 Type fieldType = FieldType;
71 if (fieldType.IsPointer || fieldType.IsEnum || fieldType.IsPrimitive)
72 {
73 iNVOCATION_FLAGS |= INVOCATION_FLAGS.INVOCATION_FLAGS_FIELD_SPECIAL_CAST;
74 }
75 }
76 return m_invocationFlags = iNVOCATION_FLAGS | INVOCATION_FLAGS.INVOCATION_FLAGS_INITIALIZED;
77 }
78
79 internal RtFieldInfo(RuntimeFieldHandleInternal handle, RuntimeType declaringType, RuntimeType.RuntimeTypeCache reflectedTypeCache, BindingFlags bindingFlags)
80 : base(reflectedTypeCache, declaringType, bindingFlags)
81 {
82 m_fieldHandle = handle.Value;
84 }
85
86 [MethodImpl(MethodImplOptions.AggressiveInlining)]
87 internal void CheckConsistency(object target)
88 {
90 {
91 if (target == null)
92 {
94 }
96 }
97 }
98
99 internal override bool CacheEquals(object o)
100 {
101 if (o is RtFieldInfo rtFieldInfo)
102 {
103 return rtFieldInfo.m_fieldHandle == m_fieldHandle;
104 }
105 return false;
106 }
107
112
113 [DebuggerStepThrough]
114 [DebuggerHidden]
115 public override object GetValue(object obj)
116 {
117 INVOCATION_FLAGS invocationFlags = InvocationFlags;
118 RuntimeType runtimeType = DeclaringType as RuntimeType;
119 if ((invocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_NO_INVOKE) != 0)
120 {
121 if (runtimeType != null && DeclaringType.ContainsGenericParameters)
122 {
124 }
125 throw new FieldAccessException();
126 }
128 RuntimeType fieldType = (RuntimeType)FieldType;
129 bool domainInitialized = false;
130 if (runtimeType == null)
131 {
132 return RuntimeFieldHandle.GetValue(this, obj, fieldType, null, ref domainInitialized);
133 }
134 domainInitialized = runtimeType.DomainInitialized;
135 object value = RuntimeFieldHandle.GetValue(this, obj, fieldType, runtimeType, ref domainInitialized);
136 runtimeType.DomainInitialized = domainInitialized;
137 return value;
138 }
139
140 public override object GetRawConstantValue()
141 {
142 throw new InvalidOperationException();
143 }
144
145 [DebuggerStepThrough]
146 [DebuggerHidden]
147 public unsafe override object GetValueDirect(TypedReference obj)
148 {
149 if (obj.IsNull)
150 {
152 }
154 }
155
156 [DebuggerStepThrough]
157 [DebuggerHidden]
158 public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture)
159 {
160 INVOCATION_FLAGS invocationFlags = InvocationFlags;
161 RuntimeType runtimeType = DeclaringType as RuntimeType;
162 if ((invocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_NO_INVOKE) != 0)
163 {
164 if (runtimeType != null && runtimeType.ContainsGenericParameters)
165 {
167 }
168 throw new FieldAccessException();
169 }
171 RuntimeType runtimeType2 = (RuntimeType)FieldType;
172 value = runtimeType2.CheckValue(value, binder, culture, invokeAttr);
173 bool domainInitialized = false;
174 if (runtimeType == null)
175 {
176 RuntimeFieldHandle.SetValue(this, obj, value, runtimeType2, m_fieldAttributes, null, ref domainInitialized);
177 return;
178 }
179 domainInitialized = runtimeType.DomainInitialized;
180 RuntimeFieldHandle.SetValue(this, obj, value, runtimeType2, m_fieldAttributes, runtimeType, ref domainInitialized);
181 runtimeType.DomainInitialized = domainInitialized;
182 }
183
184 [DebuggerStepThrough]
185 [DebuggerHidden]
186 public unsafe override void SetValueDirect(TypedReference obj, object value)
187 {
188 if (obj.IsNull)
189 {
191 }
193 }
194
196 {
197 return m_fieldHandle;
198 }
199
200 [MethodImpl(MethodImplOptions.NoInlining)]
202 {
203 return m_fieldType = new Signature(this, m_declaringType).FieldType;
204 }
205
207 {
208 return new Signature(this, m_declaringType).GetCustomModifiers(1, required: true);
209 }
210
212 {
213 return new Signature(this, m_declaringType).GetCustomModifiers(1, required: false);
214 }
215}
override Type[] GetRequiredCustomModifiers()
RtFieldInfo(RuntimeFieldHandleInternal handle, RuntimeType declaringType, RuntimeType.RuntimeTypeCache reflectedTypeCache, BindingFlags bindingFlags)
void CheckConsistency(object target)
override bool CacheEquals(object o)
INVOCATION_FLAGS InvocationFlags
unsafe override void SetValueDirect(TypedReference obj, object value)
override RuntimeFieldHandle FieldHandle
override FieldAttributes Attributes
override Type[] GetOptionalCustomModifiers()
INVOCATION_FLAGS InitializeInvocationFlags()
INVOCATION_FLAGS m_invocationFlags
unsafe override object GetValueDirect(TypedReference obj)
override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture)
override RuntimeModule GetRuntimeModule()
override object GetValue(object obj)
override object GetRawConstantValue()
FieldAttributes m_fieldAttributes
object CheckValue(object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
override bool IsInstanceOfType([NotNullWhen(true)] object o)
override bool ContainsGenericParameters
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string Arg_FieldDeclTarget
Definition SR.cs:158
static string Arg_UnboundGenField
Definition SR.cs:442
static string Arg_TypedReference_Null
Definition SR.cs:430
static string RFLCT_Targ_StatFldReqTarg
Definition SR.cs:1848
Definition SR.cs:7
bool IsPointer
Definition Type.cs:75
virtual bool IsEnum
Definition Type.cs:227
bool IsPrimitive
Definition Type.cs:231
virtual bool ContainsGenericParameters
Definition Type.cs:336
static RuntimeType GetApproxDeclaringType(RuntimeFieldHandleInternal field)
static unsafe object GetValueDirect(RtFieldInfo field, RuntimeType fieldType, void *pTypedRef, RuntimeType contextType)
static void SetValue(RtFieldInfo field, object obj, object value, RuntimeType fieldType, FieldAttributes fieldAttr, RuntimeType declaringType, ref bool domainInitialized)
static FieldAttributes GetAttributes(RuntimeFieldHandleInternal field)
static unsafe void SetValueDirect(RtFieldInfo field, RuntimeType fieldType, void *pTypedRef, object value, RuntimeType contextType)
static object GetValue(RtFieldInfo field, object instance, RuntimeType fieldType, RuntimeType declaringType, ref bool domainInitialized)
static string GetName(RtFieldInfo field)
static int GetToken(RtFieldInfo field)
static RuntimeModule GetModule(RuntimeType type)