private static ControllerBase createController(ControllerSettings typeSettings, Navigator navigator) { IControllerActionsInterceptor interceptor = null; if (!String.IsNullOrEmpty(typeSettings.Interceptor)) { ObjectTypeSettings typeInterceptor = (ObjectTypeSettings)UIPConfiguration.Config.InterceptorCollection[typeSettings.Interceptor]; interceptor = (IControllerActionsInterceptor) GenericFactory.Create(typeInterceptor); } else { interceptor = new ControllerActionsInterceptor(); } interceptor.State = navigator.CurrentState; interceptor.MapPropsStateKeys = typeSettings.MapPropsKeys; Type typeController = GenericFactory.CreateTypeInstance(typeSettings); Debug.Assert(typeController != null); return (ControllerBase) proxyGenerator.CreateClassProxy( typeController, new IInterceptor[] {interceptor}, new object[] {navigator}); }
private void LoadControllers(XmlNode configNode, IFormatProvider formatProvider) { ObjectTypeSettings typedObject; foreach (XmlNode viewNode in configNode.SelectNodes(NodeControllerXpath)) { typedObject = new ControllerSettings(viewNode, formatProvider); if (!_controllerByNameCollection.ContainsKey(typedObject.Name)) { _controllerByNameCollection.Add(typedObject.Name, typedObject); } else throw new Exception(string.Format("ExceptionViewSettingAlreadyConfigured {0}.", typedObject.Name)); } }