public void LoadEditor(Assembly editorAssembly) { foreach (Type t in editorAssembly.GetTypes()) { foreach (Attribute currentAttribute in Attribute.GetCustomAttributes(t)) { if (currentAttribute.GetType() == typeof(PropertyEditorTypeAttribute)) { PropertyEditorTypeAttribute peta = (PropertyEditorTypeAttribute)currentAttribute; Type editsType = peta.Type; if (t.IsSubclassOf(typeof(BaseEditor))) { if (peta.Inherits) { inheritingEditors.Add(editsType, t); } else { editors.Add(editsType, t); } } } else if (currentAttribute.GetType() == typeof(SurrogateUITypeEditorAttribute)) { Type editsType = (currentAttribute as SurrogateUITypeEditorAttribute).Type; surrogates.Add(editsType, t); } } } }