protected override void SessionChanged(object sender, LinkTosessionEventArgs <Tsession> e) { var propertyStore = e.session.GetStore <bool>(PropertyDescriptor); if (e.IsHooking) { Link(() => propertyStore.IsAvailable ? ((IPropertyStore <bool>)propertyStore).Value : valueOnUnlinked, propertyStore.ValueNotifier, propertyStore.AvailabilityNotifier); } else { Unlink(propertyStore.ValueNotifier, propertyStore.AvailabilityNotifier); Value = valueOnUnlinked; } }
protected override void SessionChanged(object sender, LinkTosessionEventArgs <Tsession> e) { if (e.IsHooking) { propertyStore = e.session.GetStore <TValue>(PropertyDescriptor); Link(() => propertyStore.IsAvailable ? propertyStore.Value : default(TValue), propertyStore.ValueNotifier, propertyStore.AvailabilityNotifier); } else { var tempStore = propertyStore; propertyStore = null; Unlink(tempStore.ValueNotifier, tempStore.AvailabilityNotifier); Value = default(TValue); IsAvailable = false; } }
protected abstract void SessionChanged(object sender, LinkTosessionEventArgs <TSession> e);