using System; using System.Linq; namespace InABox.Core { public interface IEnclosedEntity : ISubObject { } public abstract class EnclosedEntity : BaseObject, IEnclosedEntity { private BaseObject _linkedParent; private string _linkedPath; public void SetLinkedParent(BaseObject parent) { _linkedParent = parent; } public void SetLinkedPath(string path) { _linkedPath = path; } public BaseObject GetLinkedParent() => _linkedParent; public string GetLinkedPath() => _linkedPath; protected override void DoPropertyChanged(string name, object? before, object? after) { if (IsObserving()) { if (LinkedProperties.Find(this, name, out var link, out var parent)) { link.Update(this, parent); } } } } }