FieldAccessor.cs 787 B

123456789101112131415161718192021222324252627
  1. using System.Reflection;
  2. namespace Jint.Runtime.Interop.Reflection
  3. {
  4. internal sealed class FieldAccessor : ReflectionAccessor
  5. {
  6. private readonly FieldInfo _fieldInfo;
  7. public FieldAccessor(FieldInfo fieldInfo, string memberName = null, PropertyInfo indexer = null)
  8. : base(fieldInfo.FieldType, memberName, indexer)
  9. {
  10. _fieldInfo = fieldInfo;
  11. }
  12. public override bool Writable => !_fieldInfo.Attributes.HasFlag(FieldAttributes.InitOnly);
  13. protected override object DoGetValue(object target)
  14. {
  15. return _fieldInfo.GetValue(target);
  16. }
  17. protected override void DoSetValue(object target, object value)
  18. {
  19. _fieldInfo.SetValue(target, value);
  20. }
  21. }
  22. }