private static void UnregisterPathListener(SessionListener listener) { var pathInfo = listener.PathInfo; var session = pathInfo.Rootsession; if (pathInfo.IsDirect) { listener.UnhookSession(session, false); } else { session.UnregisterSessionListenerOnTrait(listener); } }
/// <summary> /// Rescinds the previously propogated listener. /// </summary> /// <param name="listener">Listener to be rescinded</param> /// <see cref="PropogateListener"/> void ISessionPropertyStore.RescindListener(SessionListener listener) { var value = this.Value as SessionBase; if (listener.PathInfo.IsTargetTrait(this)) { // Unhook the change handler listener.UnhookSession(value, false); } else { // Unregister change listener from the next session value.UnregisterSessionListenerOnTrait(listener); } }