static EnumTypeBuilder() { builders = new Dictionary <string, EnumTypeBuilder>(); defaultBuilder = new EnumTypeBuilder(); defaultBuilder.Name = "Default"; defaultBuilder.FullName = ""; defaultBuilder.Description = "Default builder for reference types."; defaultBuilder.Copyright = "Copyright © 2007 Roy A.E. Hodges"; defaultBuilder.ExtensionPath = string.Empty; defaultBuilder.Author = "Roy A.E. Hodges"; defaultBuilder.AssemblyPath = string.Empty; defaultBuilder.OutputFileNameFormat = string.Empty; builders.Add(defaultBuilder.Name, defaultBuilder); }
/// <summary> /// Adds a plugin to the plugin manager's plugin lists. If the plugin /// does not implement ClassOutputPlugin or EnumOutputPlugin then the /// type to be added will be ignored. /// </summary> /// <param name="type">The plugin to add.</param> public void AddExtension(Type type) { ExtensionAttribute attribute; object[] attributes; attributes = type.GetCustomAttributes(typeof(ExtensionAttribute), false); if (type.BaseType != null) { switch (type.BaseType.Name) { case "ValueFieldExtension": { objectExtensionTypes.Add(type.FullName, type); break; } case "ReferenceFieldExtension": { objectExtensionTypes.Add(type.FullName, type); break; } case "EnumFieldExtension": { objectExtensionTypes.Add(type.FullName, type); break; } case "ClassFolderExtension": { objectExtensionTypes.Add(type.FullName, type); break; } case "OutputExtension": { if (attributes.Length > 0) { attribute = (ExtensionAttribute)attributes[0]; OutputExtension p = (OutputExtension) Activator.CreateInstance(type); p.Name = attribute.Name; p.FullName = type.FullName; p.Author = attribute.Author; p.Copyright = attribute.Copyright; p.OutputFileNameFormat = attribute.OutputFileNameFormat; p.Description = attribute.Description; p.ExtensionPath = attribute.ExtensionPath; p.AssemblyPath = type.Assembly.Location; p.IsWebControl = attribute.IsWebControl; outputExtensions.Add(p.Name, p); } break; } case "ValueTypeBuilder": { attribute = (ExtensionAttribute)attributes[0]; ValueTypeBuilder b = (ValueTypeBuilder) Activator.CreateInstance(type); b.Name = attribute.Name; b.FullName = type.FullName; b.Author = attribute.Author; b.Copyright = b.Copyright; b.OutputFileNameFormat = string.Empty; b.Description = attribute.Description; b.ExtensionPath = string.Empty; b.AssemblyPath = type.Assembly.Location; ValueTypeBuilder.Builders.Add(b.Name, b); break; } case "ReferenceTypeBuilder": { attribute = (ExtensionAttribute)attributes[0]; ReferenceTypeBuilder b = (ReferenceTypeBuilder) Activator.CreateInstance(type); b.Name = attribute.Name; b.FullName = type.FullName; b.Author = attribute.Author; b.Copyright = b.Copyright; b.OutputFileNameFormat = string.Empty; b.Description = attribute.Description; b.ExtensionPath = string.Empty; b.AssemblyPath = type.Assembly.Location; ReferenceTypeBuilder.Builders.Add(b.Name, b); break; } case "EnumTypeBuilder": { attribute = (ExtensionAttribute)attributes[0]; EnumTypeBuilder b = (EnumTypeBuilder) Activator.CreateInstance(type); b.Name = attribute.Name; b.FullName = type.FullName; b.Author = attribute.Author; b.Copyright = b.Copyright; b.OutputFileNameFormat = string.Empty; b.Description = attribute.Description; b.ExtensionPath = string.Empty; b.AssemblyPath = type.Assembly.Location; EnumTypeBuilder.Builders.Add(b.Name, b); break; } } } }