コード例 #1
0
        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);
        }
コード例 #2
0
 private void _Attach(Dictionary <long, NotifierEventBinder> binders, long id, NotifierEventBinder binder)
 {
     binders.Add(id, binder);
     binder.Setup();
 }
コード例 #3
0
 internal void AttachUnsupply(long id, NotifierEventBinder binder)
 {
     _Attach(_UnsupplyBinder, id, binder);
 }