AccessorDescriptor.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using Jint.Native;
  3. namespace Jint.Runtime.Descriptors
  4. {
  5. public class AccessorDescriptor : PropertyDescriptor
  6. {
  7. public AccessorDescriptor(object getter) : this(getter, Native.Undefined.Instance)
  8. {
  9. }
  10. public AccessorDescriptor(object getter, object setter)
  11. {
  12. if (getter == null)
  13. {
  14. throw new ArgumentNullException("getter", "get can only be undefined");
  15. }
  16. if (setter == null)
  17. {
  18. throw new ArgumentNullException("setter", "set can only be undefined");
  19. }
  20. Get = getter;
  21. Set = setter;
  22. }
  23. public AccessorDescriptor(AccessorDescriptor a)
  24. {
  25. Get = a.Get;
  26. Set = a.Set;
  27. Configurable = a.Configurable;
  28. Enumerable = a.Enumerable;
  29. }
  30. /// <summary>
  31. /// The getter function
  32. /// </summary>
  33. /// <returns></returns>
  34. public virtual object Get { get; set; }
  35. /// <summary>
  36. /// The setter function
  37. /// </summary>
  38. /// <returns></returns>
  39. public virtual object Set { get; set; }
  40. public override bool IsAccessorDescriptor()
  41. {
  42. return true;
  43. }
  44. public override bool IsDataDescriptor()
  45. {
  46. return false;
  47. }
  48. }
  49. }