public bool AddCallbacks(object target, MethodInfo methodInfo, object obj)
        {
            if (!EnableBind(methodInfo, obj))
            {
                return(false);
            }

            var collider2D  = GameObjectExtensions.GetComponent <Collider2D>(obj);
            var onCollision = collider2D.gameObject.GetOrAddComponent <T>();

            return(BindCallbackAttribute.BindWithTypeAndCallbackName(target, methodInfo, onCollision, typeof(T), GetCallbackName()));
        }
        public bool RemoveCallbacks(object target, MethodInfo methodInfo, object obj)
        {
            if (!EnableBind(methodInfo, obj))
            {
                return(false);
            }

            var joint2D      = GameObjectExtensions.GetComponent <Joint2D>(obj);
            var onJointBreak = joint2D.gameObject.GetOrAddComponent <Physic2DOnJointBreakCallbacks>();

            return(BindCallbackAttribute.UnbindWithTypeAndCallbackName(target, methodInfo, onJointBreak, typeof(Physic2DOnJointBreakCallbacks), GetCallbackName()));
        }