1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Reflection;
\r
6 using Microsoft.Internal;
\r
7 using System.Threading;
\r
9 namespace System.ComponentModel.Composition.ReflectionModel
\r
11 internal class ReflectionField : ReflectionWritableMember
\r
13 private readonly FieldInfo _field;
\r
15 public ReflectionField(FieldInfo field)
\r
17 Assumes.NotNull(field);
\r
19 this._field = field;
\r
22 public FieldInfo UndelyingField
\r
24 get { return this._field; }
\r
27 public override MemberInfo UnderlyingMember
\r
29 get { return this.UndelyingField; }
\r
32 public override bool CanRead
\r
34 get { return true; }
\r
37 public override bool CanWrite
\r
39 get { return !this.UndelyingField.IsInitOnly; }
\r
42 public override bool RequiresInstance
\r
44 get { return !this.UndelyingField.IsStatic; }
\r
47 public override Type ReturnType
\r
49 get { return this.UndelyingField.FieldType; }
\r
52 public override ReflectionItemType ItemType
\r
54 get { return ReflectionItemType.Field; }
\r
57 public override object GetValue(object instance)
\r
59 return this.UndelyingField.SafeGetValue(instance);
\r
62 public override void SetValue(object instance, object value)
\r
64 this.UndelyingField.SafeSetValue(instance, value);
\r