SobekCM.Core.Configuration.Extensions.ExtensionInfo.Add_Assembly C# (CSharp) Метод

Add_Assembly() публичный Метод

Add information about a related assembly for this plug-in
public Add_Assembly ( string ID, string AssemblyPathFile ) : void
ID string ID for this assembly, which is used throughout the configuration files to reference this assembly
AssemblyPathFile string Absolute path and filename for this assembly DLL file
Результат void
        public void Add_Assembly(string ID, string AssemblyPathFile)
        {
            if (Assemblies == null) Assemblies = new List<ExtensionAssembly>();

            Assemblies.Add(new ExtensionAssembly(ID, AssemblyPathFile));
        }

Same methods

ExtensionInfo::Add_Assembly ( string AssemblyPathFile ) : void

Usage Example

        private static ExtensionInfo read_extension_details(XmlReader readerXml, InstanceWide_Configuration config, string SourceDirectoryName, string SourceDirectory )
        {
            // Create the new extension information object
            ExtensionInfo thisExtension = new ExtensionInfo
            {
                Code = SourceDirectoryName,
                Name = SourceDirectoryName,
                Version = "0.0"
            };

            // Read the attributes
            if (readerXml.MoveToAttribute("name"))
                thisExtension.Name = readerXml.Value.Trim();
            if (readerXml.MoveToAttribute("version"))
                thisExtension.Version = readerXml.Value.Trim();
            if (readerXml.MoveToAttribute("code"))
            {
                string code = readerXml.Value.Trim();
                if (String.Compare(SourceDirectoryName, code, StringComparison.OrdinalIgnoreCase) == 0)
                    thisExtension.Code = code;
                else
                {
                    thisExtension.Add_Error("WARNING: Code in the extension config ( " + code + " ) does not match directory name ( " + SourceDirectoryName + " )");
                    if (config != null)
                        config.Source.Add_Log("           WARNING: Code in the extension config ( " + code + " ) does not match directory name ( " + SourceDirectoryName + " )");
                }
            }

            // Check to see if a user with the HIGHEST rights is only that can disable ( i.e., the HOST ADMIN if hosted )
            if (readerXml.MoveToAttribute("canDisable"))
            {
                string whoDisable = readerXml.Value.Trim();
                if (String.Compare(whoDisable, "host", StringComparison.InvariantCultureIgnoreCase) == 0)
                    thisExtension.HighestRightsRequired = true;
            }

            // Just step through the subtree of this
            readerXml.MoveToElement();
            XmlReader childReader = readerXml.ReadSubtree();
            while (childReader.Read())
            {
                if (childReader.NodeType == XmlNodeType.Element)
                {
                    switch (childReader.Name.ToLower())
                    {
                        case "description":
                            childReader.Read();
                            string description = childReader.Value;
                            if (!String.IsNullOrWhiteSpace(description))
                            {
                                if (thisExtension.AdminInfo == null) thisExtension.AdminInfo = new ExtensionAdminInfo();
                                thisExtension.AdminInfo.Description = description;
                            }
                            break;

                        case "author":
                            if (readerXml.MoveToAttribute("name"))
                            {
                                string author_name = readerXml.Value.Trim();
                                string author_email = (readerXml.MoveToAttribute("email")) ? readerXml.Value.Trim() : String.Empty;
                                if (thisExtension.AdminInfo == null) thisExtension.AdminInfo = new ExtensionAdminInfo();
                                thisExtension.AdminInfo.Add_Author(author_name, author_email);
                            }
                            break;

                        case "permissions":
                            childReader.Read();
                            string permissions = childReader.Value;
                            if (!String.IsNullOrWhiteSpace(permissions))
                            {
                                if (thisExtension.AdminInfo == null) thisExtension.AdminInfo = new ExtensionAdminInfo();
                                thisExtension.AdminInfo.Permissions = permissions;
                            }
                            break;
                            break;

                        case "assembly":
                            if (childReader.MoveToAttribute("name"))
                            {
                                string assembly_name = childReader.Value.Trim();
                                string full_assembly_name = Path.Combine(SourceDirectory, assembly_name);

                                string id = String.Empty;
                                if (childReader.MoveToAttribute("id"))
                                    id = childReader.Value.Trim();

                                if (File.Exists(full_assembly_name))
                                {
                                    // Was there an ID?
                                    if (String.IsNullOrEmpty(id))
                                        id = Path.GetFileNameWithoutExtension(full_assembly_name);

                                    thisExtension.Add_Assembly(id, full_assembly_name);
                                }
                                else
                                {
                                    thisExtension.Add_Error("ERROR: Referenced assembly ( " + full_assembly_name + " ) does not exist");
                                    if (config != null)
                                        config.Source.Add_Log("           ERROR: Referenced assembly ( " + full_assembly_name + " ) does not exist");
                                }
                            }
                            break;

                        case "css":
                            string css_url = String.Empty;
                            string css_condition = String.Empty;
                            if (childReader.MoveToAttribute("url"))
                                css_url = childReader.Value.Trim();
                            if (childReader.MoveToAttribute("condition"))
                                css_condition = childReader.Value.Trim();
                            if ((!String.IsNullOrWhiteSpace(css_url)) && (!String.IsNullOrWhiteSpace(css_condition)))
                            {
                                ExtensionCssInfoConditionEnum condition = ExtensionCssInfoConditionEnum.ERROR;
                                switch (css_condition.ToLower())
                                {
                                    case "admin":
                                        condition = ExtensionCssInfoConditionEnum.Admin;
                                        break;

                                    case "aggregation":
                                        condition = ExtensionCssInfoConditionEnum.Aggregation;
                                        break;

                                    case "always":
                                        condition = ExtensionCssInfoConditionEnum.Always;
                                        break;

                                    case "item":
                                        condition = ExtensionCssInfoConditionEnum.Item;
                                        break;

                                    case "metadata":
                                        condition = ExtensionCssInfoConditionEnum.Metadata;
                                        break;

                                    case "mysobek":
                                        condition = ExtensionCssInfoConditionEnum.MySobek;
                                        break;

                                    case "results":
                                        condition = ExtensionCssInfoConditionEnum.Results;
                                        break;

                                }

                                if (condition != ExtensionCssInfoConditionEnum.ERROR)
                                    thisExtension.Add_CssFile(css_url, condition);
                            }
                            break;

                    }
                }
            }

            // Return the built extension information
            return thisExtension;
        }