internal static ClassTypeInformation LoadTypeInformation(Type type, BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance) { // Validation if (ClassTypeList == null) { return(null); } // Check To See If Type Is Already Cached ClassTypeInformation classTypeInfo = ClassTypeList.Where(cls => cls.Type == type).FirstOrDefault(); // Validation if (classTypeInfo != null) { return(classTypeInfo); } // Create Class Information ClassTypeInformation classInfo = new ClassTypeInformation(type); // Add Class Information To Cache List ClassTypeList.Add(classInfo); // For Each Class Child Type classInfo.ChildTypes .ForEach(childType => // Load Child Type Information LoadTypeInformation(childType, bindingFlags)); return(classInfo); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (service != null) { LimnorWinApp mc = context.Instance as LimnorWinApp; if (mc == null) { ClassPointer cp = context.Instance as ClassPointer; if (cp != null) { mc = cp.ObjectInstance as LimnorWinApp; } } if (mc != null) { if (mc.Project != null) { ClassTypeList ctl = new ClassTypeList(service, mc.Project, mc.StartForm); service.DropDownControl(ctl); if (ctl.SelectedObj != null) { PropertyDescriptorCollection ps = TypeDescriptor.GetProperties(mc); foreach (PropertyDescriptor p in ps) { if (string.CompareOrdinal(p.Name, "StartClassId") == 0) { p.SetValue(mc, ctl.SelectedObj.ComponentId); break; } } } } } } } return(value); }