public void RegisterRetCallback(String cmdname, RetCallbackType func, Type vartype, Type rettype, String desc)
 {
     CallbackItem cb;
     String vartypename = "null";
     String cmd = cmdname;
     if (vartype != null)
     {
         vartypename = vartype.ToString();
         cmd += "|" + vartypename;
     }
     if (CallbackDB.ContainsKey(cmdname))
     {
         cb = CallbackDB[cmd];
     }
     else
     {
         cb = new CallbackItem();
         cb.name = cmdname;
         cb.type = vartypename;
         cb.description = desc;
         CallbackDB[cmd] = cb;
     }
     cb.RetCallback += new RetCallbackType(func);
     cb.retType = rettype.ToString();
     cb.Callback = null;
 }