2 // System.Reflection/PropertyInfo.cs
5 // Paolo Molaro (lupus@ximian.com)
7 // (C) 2001 Ximian, Inc. http://www.ximian.com
11 using System.Diagnostics;
12 using System.Reflection;
13 using System.Globalization;
14 using System.Runtime.InteropServices;
16 namespace System.Reflection {
18 [ClassInterface(ClassInterfaceType.AutoDual)]
19 public abstract class PropertyInfo : MemberInfo {
21 public abstract PropertyAttributes Attributes { get; }
22 public abstract bool CanRead { get; }
23 public abstract bool CanWrite { get; }
25 public bool IsSpecialName {
26 get {return (Attributes & PropertyAttributes.SpecialName) != 0;}
29 public override MemberTypes MemberType {
30 get {return MemberTypes.Property;}
32 public abstract Type PropertyType { get; }
34 protected PropertyInfo () { }
36 public MethodInfo[] GetAccessors ()
38 return GetAccessors (false);
41 public abstract MethodInfo[] GetAccessors (bool nonPublic);
43 public MethodInfo GetGetMethod()
45 return GetGetMethod (false);
47 public abstract MethodInfo GetGetMethod(bool nonPublic);
49 public abstract ParameterInfo[] GetIndexParameters();
51 public MethodInfo GetSetMethod()
53 return GetSetMethod (false);
56 public abstract MethodInfo GetSetMethod (bool nonPublic);
60 public virtual object GetValue (object obj, object[] index)
62 return GetValue(obj, BindingFlags.Default, null, index, null);
65 public abstract object GetValue (object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);
69 public virtual void SetValue (object obj, object value, object[] index)
71 SetValue (obj, value, BindingFlags.Default, null, index, null);
74 public abstract void SetValue (object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);