84c50e2a7f9b1b1d123e1e68e47d34be5e962ae5
[mono.git] / mcs / class / corlib / System.Reflection / PropertyInfo.cs
1 //
2 // System.Reflection/PropertyInfo.cs
3 //
4 // Author:
5 //   Paolo Molaro (lupus@ximian.com)
6 //
7 // (C) 2001 Ximian, Inc.  http://www.ximian.com
8 //
9
10 using System;
11 using System.Reflection;
12 using System.Globalization;
13
14 namespace System.Reflection {
15         [Serializable]
16         public abstract class PropertyInfo : MemberInfo {
17
18                 public abstract PropertyAttributes Attributes {get;}
19                 public abstract bool CanRead {get;}
20                 public abstract bool CanWrite {get;}
21
22                 public bool IsSpecialName {
23                         get {return (Attributes & PropertyAttributes.SpecialName) != 0;}
24                 }
25
26                 public override MemberTypes MemberType {
27                         get {return MemberTypes.Property;}
28                 }
29                 public abstract Type PropertyType {get;}
30         
31                 protected PropertyInfo() {
32                 }
33
34                 public MethodInfo[] GetAccessors() {
35                         return GetAccessors (false);
36                 }
37                 public abstract MethodInfo[] GetAccessors( bool nonPublic);
38                 public MethodInfo GetGetMethod() {
39                         return GetGetMethod (false);
40                 }
41                 public abstract MethodInfo GetGetMethod( bool nonPublic);
42                 public abstract ParameterInfo[] GetIndexParameters();
43                 public MethodInfo GetSetMethod() {
44                         return GetSetMethod (false);
45                 }
46                 public abstract MethodInfo GetSetMethod( bool nonPublic);
47                 public virtual object GetValue( object obj, object[] index) {
48                         return null;
49                 }
50                 public abstract object GetValue( object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);
51                 public virtual void SetValue( object obj, object value, object[] index) {
52                 }
53                 public abstract void SetValue( object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture);
54         }
55 }