//释放控制器对象 public void ReleaseController(IAddInController controller) { IDisposable disposable = controller as IDisposable; if (disposable != null) { disposable.Dispose(); } }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { try { _adapter = new AddInAdapter(addInInst); _controller = new AddInController(_adapter); _controller.OnConnection(application, connectMode, addInInst, ref custom); } catch (Exception e) { ShowMessage("Error Connect.OnConnection: " + e.Message); } }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { try { _adapter = new AddInAdapter(addInInst); _controller = new AddInController(_adapter); _controller.OnConnection(application, connectMode, addInInst, ref custom); } catch (Exception e) { ShowMessage("Error Connect.OnConnection: " + e.Message); } }
//通过当前的请求上下文和控制器名称得到控制器的对象 public IAddInController CreateController(RouteData routeData, string controllerName) { if (routeData == null) { throw new ArgumentNullException("routeData"); } if (string.IsNullOrEmpty(controllerName)) { throw new ArgumentException("controllerName"); } //得到当前的控制类型 Type controllerType = GetControllerType(routeData, controllerName); if (controllerType == null) { return(null); } //得到控制器对象 IAddInController controller = GetControllerInstance(routeData, controllerType); return(controller); }
public virtual void ProcessRequest(HttpContext context) { //写入MVC的版本到HttpHeader里面 //AddVersionHeader(httpContext); //移除参数 //RemoveOptionalRoutingParameters(); //过滤文件请求 //string url = context.Request.RawUrl; //if (!url.Contains(".")) //{ //1.从当前的RouteData里面得到请求的控制器名称 string domainName = RouteData.RouteValue["addindomain"].ToString(); string controllerName = RouteData.RouteValue["controller"].ToString(); string actionName = RouteData.RouteValue["action"].ToString(); if (domainName.ToLower() != "AddInsDomain".ToLower()) { try { if (RouteData.RouteValue.ContainsKey("postData")) { object[] parameters = ((List <object>)RouteData.RouteValue["postData"]).ToArray(); object obj = AddIn.Entity.AddInManager.Execute(domainName, controllerName, actionName, parameters); context.Response.Write(obj.ToString()); } else { object obj = AddIn.Entity.AddInManager.Execute(domainName, controllerName, actionName, null); context.Response.Write(obj.ToString()); } } catch (Exception ex) { context.Response.Write(ex.Message); } context.Response.End(); } else { //2.得到控制器工厂 IAddInControllerFactory factory = new AddInControllerFactory(); //3.通过默认控制器工厂得到当前请求的控制器对象 IAddInController controller = factory.CreateController(RouteData, controllerName); if (controller == null) { context.Response.Write("找不到控制器!"); return; } try { //4.执行控制器的Action controller.Execute(RouteData); } catch (Exception ex) { Common.Log.Write("/" + domainName + "/" + controllerName + "/" + actionName + ":" + ex.ToString()); context.Response.Write(ex.Message); } finally { //5.释放当前的控制器对象 factory.ReleaseController(controller); } } //} }