From d479431585f447e55d02ac438bc403550cb8e1cd Mon Sep 17 00:00:00 2001 From: Katy Coe Date: Sat, 20 Jun 2020 20:43:06 +0200 Subject: [PATCH] Model: Add FieldInfo.RequiresUnsafeContext --- Il2CppInspector.Common/Reflection/FieldInfo.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Il2CppInspector.Common/Reflection/FieldInfo.cs b/Il2CppInspector.Common/Reflection/FieldInfo.cs index 22bbbf3..3d06f17 100644 --- a/Il2CppInspector.Common/Reflection/FieldInfo.cs +++ b/Il2CppInspector.Common/Reflection/FieldInfo.cs @@ -82,6 +82,9 @@ namespace Il2CppInspector.Reflection { // True if the field is declared as static public bool IsStatic => (Attributes & FieldAttributes.Static) == FieldAttributes.Static; + // Returns true if using this field requires that the using method is declared as unsafe + public bool RequiresUnsafeContext => FieldType.RequiresUnsafeContext || GetCustomAttributes("System.Runtime.CompilerServices.FixedBufferAttribute").Any(); + public override MemberTypes MemberType => MemberTypes.Field; public FieldInfo(Il2CppInspector pkg, int fieldIndex, TypeInfo declaringType) : @@ -158,8 +161,6 @@ namespace Il2CppInspector.Reflection { public string GetModifierString() { var modifiers = new StringBuilder(GetAccessModifierString()); - if (FieldType.RequiresUnsafeContext || GetCustomAttributes("System.Runtime.CompilerServices.FixedBufferAttribute").Any()) - modifiers.Append("unsafe "); if (IsLiteral) modifiers.Append("const "); // All const fields are also static by implication @@ -167,6 +168,8 @@ namespace Il2CppInspector.Reflection { modifiers.Append("static "); if (IsInitOnly) modifiers.Append("readonly "); + if (RequiresUnsafeContext) + modifiers.Append("unsafe "); if (IsPinvokeImpl) modifiers.Append("extern "); if (GetCustomAttributes("System.Runtime.CompilerServices.FixedBufferAttribute").Any())