namespace System.Reflection {
+ abstract class RuntimeFieldInfo : FieldInfo
+ {
+ internal BindingFlags BindingFlags {
+ get {
+ return 0;
+ }
+ }
+ }
+
+ abstract class RtFieldInfo : RuntimeFieldInfo
+ {
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ internal extern object UnsafeGetValue (object obj);
+ }
+
[Serializable]
[StructLayout (LayoutKind.Sequential)]
- internal class MonoField : FieldInfo, ISerializable {
+ internal class MonoField : RtFieldInfo, ISerializable {
internal IntPtr klass;
internal RuntimeFieldHandle fhandle;
string name;
if (IsLiteral)
throw new FieldAccessException ("Cannot set a constant field");
if (binder == null)
- binder = Binder.DefaultBinder;
+ binder = Type.DefaultBinder;
CheckGeneric ();
if (val != null) {
- val = binder.ConvertValue (val, FieldType, culture, (invokeAttr & BindingFlags.ExactBinding) != 0);
+ RuntimeType fieldType = (RuntimeType) FieldType;
+ val = fieldType.CheckValue (val, binder, culture, invokeAttr);
}
SetValueInternal (this, obj, val);
}
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public override extern object GetRawConstantValue ();
-#if NET_4_0
public override IList<CustomAttributeData> GetCustomAttributesData () {
return CustomAttributeData.GetCustomAttributes (this);
}
-#endif
void CheckGeneric () {
if (DeclaringType.ContainsGenericParameters)