28#if IMPORTER || EXPORTER
33using System.Reflection;
34using System.Reflection.Emit;
40 sealed partial class RuntimeManagedJavaType
43 internal sealed class EnumValueJavaField : RuntimeJavaField
46 readonly
Type underlyingType;
53 internal EnumValueJavaField(RuntimeManagedJavaType tw, RuntimeJavaType fieldType) :
56 underlyingType = EnumHelper.GetUnderlyingType(tw.type);
61 protected override void EmitGetImpl(CodeEmitter ilgen)
64 ilgen.Emit(OpCodes.Unbox, underlyingType);
65 ilgen.Emit(OpCodes.Ldobj, underlyingType);
68 protected override void EmitSetImpl(CodeEmitter ilgen)
71 CodeEmitterLocal temp = ilgen.AllocTempLocal(underlyingType);
72 ilgen.Emit(OpCodes.Stloc, temp);
73 ilgen.Emit(OpCodes.Unbox, underlyingType);
74 ilgen.Emit(OpCodes.Ldloc, temp);
75 ilgen.Emit(OpCodes.Stobj, underlyingType);
76 ilgen.ReleaseTempLocal(temp);
81#if !EXPORTER && !IMPORTER && !FIRST_PASS
83 internal override object GetValue(
object obj)
88 internal override void SetValue(
object obj,
object value)
90 obj.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance)[0].SetValue(obj, value);
IKVM.Reflection.Type Type