Exemple #1
0
        /// <summary>
        /// 由Id唤醒方法
        /// </summary>
        /// <param name="commandData"></param>
        /// <param name="message"></param>
        /// <param name="elements"></param>
        /// <param name="strUseId"></param>
        /// <returns></returns>
        private Result InvokeById(ExternalCommandData commandData, ref string message, ElementSet elements, string strUseId)
        {
            //实际处理器
            IExternalCommand tempCommand = null;

            //设置addinId
            DEBUGUtility.SetAddInId(strUseId);

            //缓存判断
            if (!m_useCommandObject.ContainsKey(strUseId))
            {
                //获取命令对象
                var useCommandPacker = m_useCMDDic[strUseId];

                object tempCommandObj = CreatObjByHandlerInfo(useCommandPacker);

                //多态转换
                tempCommand = tempCommandObj as IExternalCommand;

                m_useCommandObject.Add(strUseId, tempCommand);
            }
            else
            {
                tempCommand = m_useCommandObject[strUseId];
            }

            //若是debug模式不单例命令对象
            if (DEBUGUtility.IfDebugModel)
            {
                //清除已缓存命令对象
                m_useCommandObject.Remove(strUseId);
            }

            return(tempCommand.Execute(commandData, ref message, elements));
        }
        public static Result RunCommand <T>() where T : IExternalCommand
        {
            Result           result = Result.Failed;
            Type             type   = typeof(T);
            IExternalCommand icmd   = Activator.CreateInstance(type) as IExternalCommand;

            result = icmd.Execute(Helper.CommandData, ref Helper.Message, Helper.ElementSet);
            return(Result.Succeeded);
        }
        public Result Execute(
            ExternalCommandData commandData,
            ref string message,
            ElementSet elements)
        {
            UIApplication uiApp = commandData.Application;
            UIDocument    uiDoc = uiApp.ActiveUIDocument;

            s_last_executed_command.Execute(commandData, ref message, elements);

            return(Result.Succeeded);
        }
        Result IExternalCommand.Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            try
            {
                AppDomain.CurrentDomain.AssemblyResolve += App.OnAssemblyResolve;

                return(_Command.Execute(commandData, ref message, elements));
            }
            finally
            {
                AppDomain.CurrentDomain.AssemblyResolve -= App.OnAssemblyResolve;
            }
        }