FieldAccessor.cs 731 B

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