| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System;
- using System.Collections.Generic;
- using SRDebugger.Internal;
- namespace SRDebugger.Services.Implementation
- {
- public sealed partial class OptionsServiceImpl
- {
- /// <summary>
- /// Options container that is implemented via reflection.
- /// This is the normal behaviour used when options container is added as an `object`.
- /// </summary>
- private class ReflectionOptionContainer : IOptionContainer
- {
- // Options don't change, so just leave stubs that do nothing.
- public event Action<OptionDefinition> OptionAdded
- {
- add { }
- remove { }
- }
- public event Action<OptionDefinition> OptionRemoved
- {
- add { }
- remove { }
- }
- public bool IsDynamic
- {
- get { return false; }
- }
- private List<OptionDefinition> Options
- {
- get
- {
- if (_options == null) _options = SRDebuggerUtil.ScanForOptions(_target);
- return _options;
- }
- }
- private List<OptionDefinition> _options;
- public IEnumerable<OptionDefinition> GetOptions()
- {
- return Options;
- }
- private readonly object _target;
- public ReflectionOptionContainer(object target)
- {
- _target = target;
- }
- protected bool Equals(ReflectionOptionContainer other)
- {
- return Equals(other._target, this._target);
- }
- public override bool Equals(object obj)
- {
- if (ReferenceEquals(null, obj)) return false;
- if (ReferenceEquals(this, obj)) return true;
- if (obj.GetType() != this.GetType()) return false;
- return Equals((ReflectionOptionContainer) obj);
- }
- public override int GetHashCode()
- {
- return _target.GetHashCode();
- }
- }
- }
- }
|