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

◆ AddToModule()

static ConstructorInfo System.Reflection.Emit.IgnoreAccessChecksToAttributeBuilder.AddToModule ( ModuleBuilder mb)
inlinestatic

Definition at line 7 of file IgnoreAccessChecksToAttributeBuilder.cs.

8 {
9 TypeBuilder typeBuilder = mb.DefineType("System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute", TypeAttributes.Public, typeof(Attribute));
10 FieldBuilder fieldBuilder = typeBuilder.DefineField("assemblyName", typeof(string), FieldAttributes.Private);
11 ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.HasThis, new Type[1] { fieldBuilder.FieldType });
12 ILGenerator iLGenerator = constructorBuilder.GetILGenerator();
13 iLGenerator.Emit(OpCodes.Ldarg_0);
14 iLGenerator.Emit(OpCodes.Ldarg, 1);
15 iLGenerator.Emit(OpCodes.Stfld, fieldBuilder);
16 iLGenerator.Emit(OpCodes.Ret);
17 PropertyBuilder propertyBuilder = typeBuilder.DefineProperty("AssemblyName", PropertyAttributes.None, CallingConventions.HasThis, typeof(string), null);
18 MethodBuilder methodBuilder = typeBuilder.DefineMethod("get_AssemblyName", MethodAttributes.Public, CallingConventions.HasThis, typeof(string), null);
19 propertyBuilder.SetGetMethod(methodBuilder);
20 iLGenerator = methodBuilder.GetILGenerator();
21 iLGenerator.Emit(OpCodes.Ldarg_0);
22 iLGenerator.Emit(OpCodes.Ldfld, fieldBuilder);
23 iLGenerator.Emit(OpCodes.Ret);
24 TypeInfo typeInfo = typeof(AttributeUsageAttribute).GetTypeInfo();
25 ConstructorInfo con = typeInfo.DeclaredConstructors.Single((ConstructorInfo c) => c.GetParameters().Length == 1 && c.GetParameters()[0].ParameterType == typeof(AttributeTargets));
26 PropertyInfo propertyInfo = typeInfo.DeclaredProperties.Single((PropertyInfo f) => string.Equals(f.Name, "AllowMultiple"));
27 CustomAttributeBuilder customAttribute = new CustomAttributeBuilder(con, new object[1] { AttributeTargets.Assembly }, new PropertyInfo[1] { propertyInfo }, new object[1] { true });
28 typeBuilder.SetCustomAttribute(customAttribute);
29 return typeBuilder.CreateTypeInfo().DeclaredConstructors.Single();
30 }

References System.Reflection.Emit.TypeBuilder.CreateTypeInfo(), System.Reflection.TypeInfo.DeclaredConstructors, System.Reflection.TypeInfo.DeclaredProperties, System.Reflection.Emit.TypeBuilder.DefineConstructor(), System.Reflection.Emit.TypeBuilder.DefineField(), System.Reflection.Emit.TypeBuilder.DefineMethod(), System.Reflection.Emit.TypeBuilder.DefineProperty(), System.Reflection.Emit.ModuleBuilder.DefineType(), System.Reflection.Emit.ILGenerator.Emit(), System.Reflection.Emit.ConstructorBuilder.GetILGenerator(), System.Reflection.Emit.MethodBuilder.GetILGenerator(), System.Reflection.MethodBase.GetParameters(), System.Reflection.TypeInfo.GetTypeInfo(), System.Reflection.Emit.OpCodes.Ldarg, System.Reflection.Emit.OpCodes.Ldarg_0, System.Reflection.Emit.OpCodes.Ldfld, System.Reflection.MemberInfo.Name, System.Reflection.ParameterInfo.ParameterType, System.Reflection.Emit.OpCodes.Ret, System.Reflection.Emit.TypeBuilder.SetCustomAttribute(), System.Reflection.Emit.PropertyBuilder.SetGetMethod(), and System.Reflection.Emit.OpCodes.Stfld.