public static Type GetCategoryEditorType(EditorAttribute attribute, IMessageLogger exceptionLogger)
 {
     try
     {
         Type editorType = Type.GetType(attribute.EditorTypeName);
         if (editorType != null && typeof(CategoryEditor).IsAssignableFrom(editorType))
         {
             return(editorType);
         }
     }
     catch (Exception e)
     {
         if (exceptionLogger != null)
         {
             exceptionLogger.WriteLine(string.Format(CultureInfo.CurrentCulture, ExceptionStringTable.CategoryEditorTypeLoadFailed, ExtensibilityMetadataHelper.GetExceptionMessage(e)));
         }
     }
     return(null);
 }
        public static PropertyValueEditor GetValueEditor(IEnumerable attributes, IMessageLogger exceptionLogger)
        {
            PropertyValueEditor propertyValueEditor = null;

            if (attributes != null)
            {
                foreach (Attribute attribute in attributes)
                {
                    EditorAttribute editorAttribute = attribute as EditorAttribute;
                    if (editorAttribute != null)
                    {
                        try
                        {
                            Type editorType = Type.GetType(editorAttribute.EditorTypeName);
                            if (editorType != null && typeof(PropertyValueEditor).IsAssignableFrom(editorType))
                            {
                                propertyValueEditor = (PropertyValueEditor)Activator.CreateInstance(editorType);
                                break;
                            }
                        }
                        catch (Exception e)
                        {
                            if (exceptionLogger != null)
                            {
                                exceptionLogger.WriteLine(string.Format(CultureInfo.CurrentCulture, ExceptionStringTable.ValueEditorLoadFailed, ExtensibilityMetadataHelper.GetExceptionMessage(e)));
                            }
                        }
                    }
                }
            }
            return(propertyValueEditor);
        }