Ejemplo n.º 1
0
        static ReferenceTypeBuilder()
        {
            builders = new Dictionary <string, ReferenceTypeBuilder>();

            defaultBuilder                      = new ReferenceTypeBuilder();
            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);
        }
Ejemplo n.º 2
0
        /// <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;
                }
                }
            }
        }