123456789101112131415161718192021222324252627282930313233343536 |
- 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);
- }
- }
- }
|