public void AddNotifierUnsupply(long entity_id, int property_id, long notifier_id) { Soul soul = (from s in _Souls.UpdateSet() where s.Id == entity_id select s).FirstOrDefault(); if (soul == null) { return; } PropertyInfo propertyInfo = _Protocol.GetMemberMap().GetProperty(property_id); if (propertyInfo == null) { return; } Type gpiType = propertyInfo.PropertyType.GetGenericArguments().Single(); NotifierEventBinder binder = NotifierEventBinder.Create(soul.ObjectInstance, propertyInfo, nameof(INotifier <object> .Unsupply), (gpi) => _UnbindSupply(gpi, gpiType, notifier_id)); if (binder == null) { return; } soul.AttachUnsupply(notifier_id, binder); }
private void _Attach(Dictionary <long, NotifierEventBinder> binders, long id, NotifierEventBinder binder) { binders.Add(id, binder); binder.Setup(); }
internal void AttachUnsupply(long id, NotifierEventBinder binder) { _Attach(_UnsupplyBinder, id, binder); }