Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / System / ComponentModel / Composition / ReflectionModel / ReflectionField.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Reflection;\r
6 using Microsoft.Internal;\r
7 using System.Threading;\r
8 \r
9 namespace System.ComponentModel.Composition.ReflectionModel\r
10 {\r
11     internal class ReflectionField : ReflectionWritableMember\r
12     {\r
13         private readonly FieldInfo _field;\r
14 \r
15         public ReflectionField(FieldInfo field)\r
16         {\r
17             Assumes.NotNull(field);\r
18 \r
19             this._field = field;\r
20         }\r
21 \r
22         public FieldInfo UndelyingField\r
23         {\r
24             get { return this._field; }\r
25         }\r
26 \r
27         public override MemberInfo UnderlyingMember\r
28         {\r
29             get { return this.UndelyingField; }\r
30         }\r
31 \r
32         public override bool CanRead\r
33         {\r
34             get { return true; }\r
35         }\r
36 \r
37         public override bool CanWrite\r
38         {\r
39             get { return !this.UndelyingField.IsInitOnly; }\r
40         }\r
41 \r
42         public override bool RequiresInstance\r
43         {\r
44             get { return !this.UndelyingField.IsStatic; }\r
45         }\r
46 \r
47         public override Type ReturnType\r
48         {\r
49             get { return this.UndelyingField.FieldType; }\r
50         }\r
51 \r
52         public override ReflectionItemType ItemType\r
53         {\r
54             get { return ReflectionItemType.Field; }\r
55         }\r
56 \r
57         public override object GetValue(object instance)\r
58         {\r
59             return this.UndelyingField.SafeGetValue(instance);\r
60         }\r
61 \r
62         public override void SetValue(object instance, object value)\r
63         {\r
64             this.UndelyingField.SafeSetValue(instance, value);\r
65         }\r
66     }\r
67 }\r