1234567891011121314151617181920212223242526272829303132333435 |
- using Jint.Native;
- using Jint.Runtime.Descriptors;
- namespace Jint.Runtime.Interop.Reflection;
- internal sealed class ConstantValueAccessor : ReflectionAccessor
- {
- public static readonly ConstantValueAccessor NullAccessor = new(null);
- public ConstantValueAccessor(JsValue? value) : base(null!, null!)
- {
- ConstantValue = value;
- }
- public override bool Writable => false;
- protected override JsValue? ConstantValue { get; }
- protected override object? DoGetValue(object target, string memberName)
- {
- return ConstantValue;
- }
- protected override void DoSetValue(object target, string memberName, object? value)
- {
- throw new InvalidOperationException();
- }
- public override PropertyDescriptor CreatePropertyDescriptor(Engine engine, object target, string memberName, bool enumerable = true)
- {
- return ConstantValue is null
- ? PropertyDescriptor.Undefined
- : new(ConstantValue, PropertyFlag.AllForbidden);
- }
- }
|