2 // System.Reflection.FieldInfo.cs
5 // Miguel de Icaza (miguel@ximian.com)
7 // (C) Ximian, Inc. http://www.ximian.com
9 // TODO: Mucho left to implement.
13 using System.Reflection;
14 using System.Reflection.Emit;
15 using System.Globalization;
16 using System.Runtime.CompilerServices;
17 using System.Runtime.InteropServices;
19 namespace System.Reflection {
22 [ClassInterface(ClassInterfaceType.AutoDual)]
23 public abstract class FieldInfo : MemberInfo {
24 public abstract FieldAttributes Attributes {get;}
25 public abstract RuntimeFieldHandle FieldHandle {get;}
27 internal FieldInfo () {}
29 public abstract Type FieldType { get; }
31 public abstract object GetValue(object obj);
33 public override MemberTypes MemberType {
34 get { return MemberTypes.Field;}
39 get {return (Attributes & FieldAttributes.Literal) != 0;}
44 get {return (Attributes & FieldAttributes.Static) != 0;}
47 public bool IsInitOnly
49 get {return (Attributes & FieldAttributes.InitOnly) != 0;}
51 public Boolean IsPublic
55 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public;
58 public Boolean IsPrivate
62 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private;
65 public Boolean IsFamily
69 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family;
72 public Boolean IsAssembly
76 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly;
79 public Boolean IsFamilyAndAssembly
82 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem;
85 public Boolean IsFamilyOrAssembly
89 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem;
92 public Boolean IsPinvokeImpl
96 return (Attributes & FieldAttributes.PinvokeImpl) == FieldAttributes.PinvokeImpl;
99 public Boolean IsSpecialName
103 return (Attributes & FieldAttributes.SpecialName) == FieldAttributes.SpecialName;
106 public Boolean IsNotSerialized
110 return (Attributes & FieldAttributes.NotSerialized) == FieldAttributes.NotSerialized;
114 public abstract void SetValue (object obj, object val, BindingFlags invokeAttr, Binder binder, CultureInfo culture);
116 public void SetValue (object obj, object value)
118 SetValue (obj, value, 0, null, null);
121 [MethodImplAttribute(MethodImplOptions.InternalCall)]
122 private static extern FieldInfo internal_from_handle (IntPtr handle);
124 public static FieldInfo GetFieldFromHandle (RuntimeFieldHandle handle)
126 return internal_from_handle (handle.Value);