1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
//
// System.Reflection/MonoField.cs
// The class used to represent Fields from the mono runtime.
//
// Author:
// Paolo Molaro (lupus@ximian.com)
//
// (C) 2001 Ximian, Inc. http://www.ximian.com
//
using System;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace System.Reflection {
internal struct MonoFieldInfo {
public Type parent;
public Type type;
public String name;
public FieldAttributes attrs;
[MethodImplAttribute(MethodImplOptions.InternalCall)]
internal static extern void get_field_info (MonoField field, out MonoFieldInfo info);
}
internal class MonoField : FieldInfo {
internal IntPtr klass;
internal RuntimeFieldHandle fhandle;
public override FieldAttributes Attributes {
get {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return info.attrs;
}
}
public override RuntimeFieldHandle FieldHandle {
get {return fhandle;}
}
public override Type FieldType {
get {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return info.type;
}
}
public override Type ReflectedType {
get {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return info.parent;
}
}
public override Type DeclaringType {
get {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return info.parent;
}
}
public override string Name {
get {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return info.name;
}
}
public override bool IsDefined (Type attributeType, bool inherit) {
return MonoCustomAttrs.IsDefined (this, attributeType, inherit);
}
public override object[] GetCustomAttributes( bool inherit) {
return MonoCustomAttrs.GetCustomAttributes (this, inherit);
}
public override object[] GetCustomAttributes( Type attributeType, bool inherit) {
return MonoCustomAttrs.GetCustomAttributes (this, attributeType, inherit);
}
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern override object GetValue(object obj);
public override string ToString () {
MonoFieldInfo info;
MonoFieldInfo.get_field_info (this, out info);
return String.Format ("{0} {1}", info.type, info.name);
}
[MonoTODO]
public override void SetValue (object obj, object val, BindingFlags invokeAttr, Binder binder, CultureInfo culture)
{
}
}
}
|