public void Intercept(ResolveInvocation invocation) { Releasing releasing = null; if (resolvers.Count > 0) { foreach (var resolver in resolvers) { var releaser = resolver(kernel, invocation.Context); if (releaser != null) { if (releasing == null) { releasing = new Releasing(resolvers.Count, kernel); invocation.RequireDecommission(); } releasing.Add(releaser); } } } invocation.Proceed(); if (releasing == null) { return; } var burden = invocation.Burden; if (burden == null) { return; } burden.Releasing += releasing.Invoked; }
/// <summary> /// Отпустить шайбу /// </summary> public void Release() { Releasing?.Invoke(null, null); _inHand = false; _playerTransform = null; _targetJoint.enabled = false; _rigidbody.constraints = RigidbodyConstraints2D.None; gameObject.layer = _puckLayer; Released?.Invoke(null, null); }
/// <summary> /// 将实例释放,返还给池 /// </summary> /// <param name="target">被释放的实例</param> /// <param name="callback">实例被返还回池时对其进行必要的处理</param> public void Release(T target, Action <T> callback = null) { if (target == null) { #if DEBUG throw new ArgumentNullException("target", "将空值放入了池中"); #else return; #endif } callback?.Invoke(target); Releasing?.Invoke(target); _queue.Enqueue(target); }
private void ReleaseGrip() { if (IsGripping) { //release the constraint if (ProducesConstraint) { //restore gripped objects values if (!_gripping.IsDeleted) { _grippingBody.Kinematic = _grippingKinematic; _gripping.Parent = _grippingParent; } _grippingBody = null; _grippingParent = null; //call event Releasing?.Invoke(_gripping); } _gripping = null; } }
protected virtual void OnReleasing() { Releasing?.Invoke(this, EventArgs.Empty); }