private FieldInfo GetFieldInfo() { // turn the field builder back into a FieldInfo return(_builder.DeclaringType.Module.ResolveField( _builder.GetToken().Token )); }
static public FieldInfo GetNativeFieldInfo(this FieldBuilder item) { if (item.IsCreated()) { return(item.DeclaringType .GetNativeMemberFields() .FindOnly(m => m.MetadataToken == item.GetToken().Token)); } return(item); }
private FieldInfo GetFieldInfo() { // turn the field builder back into a FieldInfo #if SILVERLIGHT return(_finishedType.Value.GetField(_builder.Name)); #else return(_builder.DeclaringType.Module.ResolveField( _builder.GetToken().Token )); #endif }
private FieldInfo GetFieldInfo() { // turn the field builder back into a FieldInfo #if NETCOREAPP2_0 || NETCOREAPP2_1 return(_finishedType.Value.GetDeclaredField(_builder.Name)); #else return(_builder.DeclaringType.Module.ResolveField( _builder.GetToken().Token )); #endif }
private FieldInfo GetFieldInfo() { // turn the field builder back into a FieldInfo #if FEATURE_REFEMIT_FULL return(_builder.DeclaringType.Module.ResolveField( _builder.GetToken().Token )); #else return(_finishedType.Value.GetDeclaredField(_builder.Name)); #endif }
private static Type CreateType(AppDomain currentDomain) { // <Snippet2> // Create an assembly. AssemblyName myAssemblyName = new AssemblyName(); myAssemblyName.Name = "DynamicAssembly"; AssemblyBuilder myAssembly = currentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run); // Create a dynamic module in Dynamic Assembly. ModuleBuilder myModuleBuilder = myAssembly.DefineDynamicModule("MyModule"); // Define a public class named "MyClass" in the assembly. TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyClass", TypeAttributes.Public); // Define a private String field named "MyField" in the type. FieldBuilder myFieldBuilder = myTypeBuilder.DefineField("MyField", typeof(string), FieldAttributes.Private | FieldAttributes.Static); // Create the constructor. Type[] constructorArgs = { typeof(String) }; ConstructorBuilder constructor = myTypeBuilder.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard, constructorArgs); ILGenerator constructorIL = constructor.GetILGenerator(); constructorIL.Emit(OpCodes.Ldarg_0); ConstructorInfo superConstructor = typeof(Object).GetConstructor(new Type[0]); constructorIL.Emit(OpCodes.Call, superConstructor); constructorIL.Emit(OpCodes.Ldarg_0); constructorIL.Emit(OpCodes.Ldarg_1); constructorIL.Emit(OpCodes.Stfld, myFieldBuilder); constructorIL.Emit(OpCodes.Ret); // Create the MyMethod method. MethodBuilder myMethodBuilder = myTypeBuilder.DefineMethod("MyMethod", MethodAttributes.Public, typeof(String), null); ILGenerator methodIL = myMethodBuilder.GetILGenerator(); methodIL.Emit(OpCodes.Ldarg_0); methodIL.Emit(OpCodes.Ldfld, myFieldBuilder); methodIL.Emit(OpCodes.Ret); Console.WriteLine("Name :" + myFieldBuilder.Name); Console.WriteLine("DeclaringType :" + myFieldBuilder.DeclaringType); Console.WriteLine("Type :" + myFieldBuilder.FieldType); Console.WriteLine("Token :" + myFieldBuilder.GetToken().Token); return(myTypeBuilder.CreateType()); // </Snippet2> }
public void ResolveFieldTokenFieldBuilder() { AssemblyBuilder ab = genAssembly(); ModuleBuilder mb = ab.DefineDynamicModule("foo.dll", "foo.dll"); TypeBuilder tb = mb.DefineType("foo"); FieldBuilder fb = tb.DefineField("foo", typeof(int), 0); tb.CreateType(); FieldInfo fi = mb.ResolveField(fb.GetToken().Token); Assert.IsNotNull(fi); Assert.AreEqual("foo", fi.Name); }