public static void OnCourseBtnPressedPatch_multiCourseSelect(ref UIElective __instance)
        {
            if (multiCourseSelect.Value)
            {
                Heluo.Logger.LogError("OnCourseBtnPressedPatch_multiCourseSelect start");

                CtrlElective controller = Traverse.Create(__instance).Field("controller").GetValue <CtrlElective>();

                EnumArray <Grade, List <ElectiveInfo> > sort = Traverse.Create(controller).Field("sort").GetValue <EnumArray <Grade, List <ElectiveInfo> > >();
                int gradeIndex  = Traverse.Create(controller).Field("gradeIndex").GetValue <int>();
                int courseIndex = Traverse.Create(controller).Field("courseIndex").GetValue <int>();

                ElectiveInfo electiveInfo = sort[gradeIndex][courseIndex];

                InputSelectable ElectiveSelectable = Traverse.Create(__instance).Field("ElectiveSelectable").GetValue <InputSelectable>();
                InputNavigation CurrentSelected    = ElectiveSelectable.CurrentSelected;

                if (selectElectiveInfos.Contains(electiveInfo))
                {
                    selectElectiveInfos.Remove(electiveInfo);

                    hideSelectIcon(CurrentSelected);
                }
                else
                {
                    selectElectiveInfos.Add(electiveInfo);

                    showSelectIcon(CurrentSelected);
                }

                Heluo.Logger.LogError("OnCourseBtnPressedPatch_multiCourseSelect end");
            }
        }
        public static void OnTabBtnIsOnPatch_multiCourseSelect(ref UIElective __instance, ref int index)
        {
            if (multiCourseSelect.Value)
            {
                CtrlElective controller = Traverse.Create(__instance).Field("controller").GetValue <CtrlElective>();
                EnumArray <Grade, List <ElectiveInfo> > sort = Traverse.Create(controller).Field("sort").GetValue <EnumArray <Grade, List <ElectiveInfo> > >();
                int gradeIndex = Traverse.Create(controller).Field("gradeIndex").GetValue <int>();

                List <ElectiveInfo> courses = sort[gradeIndex];

                InputSelectable        ElectiveSelectable = Traverse.Create(__instance).Field("ElectiveSelectable").GetValue <InputSelectable>();
                List <InputNavigation> InputNavigations   = ElectiveSelectable.InputNavigations;

                for (int i = 0; i < courses.Count; i++)
                {
                    InputNavigation CurrentSelected = InputNavigations[i];

                    if (selectElectiveInfos.Contains(courses[i]))
                    {
                        showSelectIcon(CurrentSelected);
                    }
                    else
                    {
                        hideSelectIcon(CurrentSelected);
                    }
                }
            }
        }
        public static void hideSelectIcon(InputNavigation CurrentSelected)
        {
            var selectImageTF = CurrentSelected.transform.Find("selectImageGO");

            if (selectImageTF != null)
            {
                selectImageTF.gameObject.SetActive(false);
            }
        }
        public static void showSelectIcon(InputNavigation CurrentSelected)
        {
            var selectImageTF = CurrentSelected.transform.Find("selectImageGO");

            if (selectImageTF == null)
            {
                GameObject selectImageGO = new GameObject("selectImageGO");
                selectImageGO.transform.position = new Vector3(selectImageGO.transform.position.x + 100, selectImageGO.transform.position.y, selectImageGO.transform.position.z);
                Image selectImage = selectImageGO.AddComponent <Image>();
                selectImage.sprite = Game.Resource.Load <Sprite>("Image/UI/UIAlchemy/alchemy_stove_shine.png");

                selectImageGO.transform.SetParent(CurrentSelected.transform, false);
            }
            else
            {
                selectImageTF.gameObject.SetActive(true);
            }
        }