using System.Reflection; namespace Jint.Runtime.Interop.Reflection; internal sealed class FieldAccessor : ReflectionAccessor { private readonly FieldInfo _fieldInfo; public FieldAccessor(FieldInfo fieldInfo, PropertyInfo? indexer = null) : base(fieldInfo.FieldType, indexer) { _fieldInfo = fieldInfo; } public override bool Writable => !_fieldInfo.Attributes.HasFlag(FieldAttributes.InitOnly); protected override object? DoGetValue(object target, string memberName) { return _fieldInfo.GetValue(target); } protected override void DoSetValue(object target, string memberName, object? value) { _fieldInfo.SetValue(target, value); } }