using System; using JD.Kernel.Classes; using JD.Kernel.StaticHelpers; using JD.Kernel.Structs; using JD.TeaBoxAddinSystem.Addins.Internal; namespace JD.TeaBoxAddinSystem.Addins { /// /// Base class for all lazy references. /// [LazyReferenceConverter] public abstract class LazyReference : Reference, IEquatable> { #region Variables private readonly Node m_node; private readonly string m_resourceName; #endregion #region Constructor /// /// Constructor. /// /// /// public LazyReference(Node node, string resourcename) { Throw.IfNull(node, "node"); Throw.IfEmpty(resourcename, "resourcename"); m_node = node; m_resourceName = resourcename; } /// /// Copy constructor. /// /// protected LazyReference(LazyReference reference) { System.Diagnostics.Debug.Assert(reference != null); m_node = reference.m_node; m_resourceName = reference.m_resourceName; } #endregion #region Properties /// /// Gets the file location to log an error. /// public string ResourceName { get { return m_resourceName; } } /// /// Gets the file location to log an error. /// protected FileLocation FileLocation { get { return m_node.FileLocation; } } /// /// Gets the node associated with the lazy reference. /// protected Node Node { get { return m_node; } } #endregion #region IEquatable> Members bool IEquatable>.Equals(LazyReference other) { return other != null && other.GetType() == GetType() && other.m_node == m_node && other.m_resourceName == m_resourceName; } #endregion } }