public static Cloud UseHook(this Cloud cloud, string className, EngineHookType hookType, EngineHookDelegateSynchronous hookDelegate)
        {
            EngineHookDelegate del = (context) =>
            {
                return(Task.Factory.StartNew(() => hookDelegate(context)));
            };

            return(cloud.UseHook(className, hookType, del));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:LeanCloud.Engine.StandardEngineObjectHookHandler"/> class.
 /// </summary>
 /// <param name="hookDelegate">Hook delegate.</param>
 public StandardEngineObjectHookHandler(EngineHookDelegate hookDelegate)
 {
     EngineHookDel = hookDelegate;
 }
 public static Cloud BeforeDelete(this Cloud cloud, string className, EngineHookDelegate hookDelegate)
 {
     return(cloud.UseHook(className, EngineHookType.BeforeDelete, hookDelegate));
 }
 public static Cloud AfterUpdate(this Cloud cloud, string className, EngineHookDelegate hookDelegate)
 {
     return(cloud.UseHook(className, EngineHookType.AfterUpdate, hookDelegate));
 }
        public static Cloud UseHook(this Cloud cloud, string className, EngineHookType hookType, EngineHookDelegate hookDelegate)
        {
            switch (hookType)
            {
            case EngineHookType.BeforeSave:
                cloud.BeforeSave(className, hookDelegate);
                break;

            case EngineHookType.AfterSave:
                cloud.AfterSave(className, hookDelegate);
                break;

            case EngineHookType.BeforeUpdate:
                cloud.BeforeUpdate(className, hookDelegate);
                break;

            case EngineHookType.AfterUpdate:
                cloud.AfterUpdate(className, hookDelegate);
                break;

            case EngineHookType.BeforeDelete:
                cloud.BeforeDelete(className, hookDelegate);
                break;

            case EngineHookType.AfterDelete:
                cloud.AfterDelete(className, hookDelegate);
                break;

            default:
                break;
            }
            return(cloud);
        }