/// <summary> /// 获取Presenter需要处理的ViewLogic, 如果不存在实例, 则新建一个 /// </summary> /// <param name="viewLogicType"></param> /// <returns></returns> public IViewLogic GetOrCreateViewLogic(Type viewLogicType) { // 先判断此类型的实例是否存在 IViewLogic returnViewLogicInstance = this.view; if (returnViewLogicInstance == null)// 如果不存在, 则新建 { var newViewLogicInstance = viewLogicType.Assembly.CreateInstance(viewLogicType.FullName); // 对 viewlogic 中的 presenters 进行赋值 FieldInfo viewLogicPresentersFieldInfo = newViewLogicInstance.GetType().BaseType.GetField("presenters", BindingFlags.Instance | BindingFlags.NonPublic); if (viewLogicPresentersFieldInfo != null) { viewLogicPresentersFieldInfo.SetValue(newViewLogicInstance, new List <IPresenter>() { this as IPresenter }); } EventInfo destoryViewLogic = newViewLogicInstance.GetType().GetEvent("DestoryViewLogicEvent"); if (destoryViewLogic != null) { destoryViewLogic.AddEventHandler(newViewLogicInstance, new EventHandler(DestroySingleViewLogic)); } returnViewLogicInstance = newViewLogicInstance as IViewLogic; this.view = returnViewLogicInstance as TView; } return(returnViewLogicInstance); }
public IViewLogic GetLogicer(string id) { string pageId = id.ToLower(); IViewLogic logicer = null; if (uiViewLogicerDic.TryGetValue(pageId, out logicer)) { return(logicer); } Debug.LogError($"{id} 逻辑脚本尚未创建实例"); return(null); }