Пример #1
0
        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);
        }
Пример #2
0
 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);
 }