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;
18 namespace System.Reflection {
21 public abstract class FieldInfo : MemberInfo {
23 public abstract FieldAttributes Attributes {get;}
24 public abstract RuntimeFieldHandle FieldHandle {get;}
26 public abstract Type FieldType { get; }
28 public abstract object GetValue(object obj);
30 public override MemberTypes MemberType {
31 get { return MemberTypes.Field;}
36 get {return (Attributes & FieldAttributes.Literal) != 0;}
41 get {return (Attributes & FieldAttributes.Static) != 0;}
44 public bool IsInitOnly
46 get {return (Attributes & FieldAttributes.InitOnly) != 0;}
48 public Boolean IsPublic
52 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public;
55 public Boolean IsPrivate
59 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private;
62 public Boolean IsFamily
66 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family;
69 public Boolean IsAssembly
73 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly;
76 public Boolean IsFamilyAndAssembly
79 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem;
82 public Boolean IsFamilyOrAssembly
86 return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem;
89 public Boolean IsPinvokeImpl
93 return (Attributes & FieldAttributes.PinvokeImpl) == FieldAttributes.PinvokeImpl;
96 public Boolean IsSpecialName
100 return (Attributes & FieldAttributes.SpecialName) == FieldAttributes.SpecialName;
103 public Boolean IsNotSerialized
107 return (Attributes & FieldAttributes.NotSerialized) == FieldAttributes.NotSerialized;
111 public abstract void SetValue (object obj, object val, BindingFlags invokeAttr, Binder binder, CultureInfo culture);
113 public void SetValue (object obj, object value)
115 SetValue (obj, value, 0, null, null);
118 [MethodImplAttribute(MethodImplOptions.InternalCall)]
119 private static extern FieldInfo internal_from_handle (IntPtr handle);
121 public static FieldInfo GetFieldFromHandle (RuntimeFieldHandle handle)
123 return internal_from_handle (handle.Value);