ARCed.Dialogs.AboutBox.AssemblyAttribs C# (CSharp) Метод

AssemblyAttribs() приватный Метод

private AssemblyAttribs ( Assembly a ) : NameValueCollection
a System.Reflection.Assembly
Результат System.Collections.Specialized.NameValueCollection
        private NameValueCollection AssemblyAttribs(Assembly a)
        {
            string typeName;
            string name;
            string value = "";
            var nvc = new NameValueCollection();
            var r = new Regex(@"(\.Assembly|\.)(?<Name>[^.]*)Attribute$", RegexOptions.IgnoreCase);
            foreach (object attrib in a.GetCustomAttributes(false))
            {
                typeName = attrib.GetType().ToString();
                name = r.Match(typeName).Groups["Name"].ToString();
                switch (typeName)
                {
                    case "System.CLSCompliantAttribute":
                        value = ((CLSCompliantAttribute)attrib).IsCompliant.ToString(); break;
                    case "System.Diagnostics.DebuggableAttribute":
                        value = ((DebuggableAttribute)attrib).IsJITTrackingEnabled.ToString(); break;
                    case "System.Reflection.AssemblyCompanyAttribute":
                        value = ((AssemblyCompanyAttribute)attrib).Company; break;
                    case "System.Reflection.AssemblyConfigurationAttribute":
                        value = ((AssemblyConfigurationAttribute)attrib).Configuration; break;
                    case "System.Reflection.AssemblyCopyrightAttribute":
                        value = ((AssemblyCopyrightAttribute)attrib).Copyright; break;
                    case "System.Reflection.AssemblyDefaultAliasAttribute":
                        value = ((AssemblyDefaultAliasAttribute)attrib).DefaultAlias; break;
                    case "System.Reflection.AssemblyDelaySignAttribute":
                        value = ((AssemblyDelaySignAttribute)attrib).DelaySign.ToString(); break;
                    case "System.Reflection.AssemblyDescriptionAttribute":
                        value = ((AssemblyDescriptionAttribute)attrib).Description; break;
                    case "System.Reflection.AssemblyInformationalVersionAttribute":
                        value = ((AssemblyInformationalVersionAttribute)attrib).InformationalVersion; break;
                    case "System.Reflection.AssemblyKeyFileAttribute":
                        value = ((AssemblyKeyFileAttribute)attrib).KeyFile; break;
                    case "System.Reflection.AssemblyProductAttribute":
                        value = ((AssemblyProductAttribute)attrib).Product; break;
                    case "System.Reflection.AssemblyTrademarkAttribute":
                        value = ((AssemblyTrademarkAttribute)attrib).Trademark; break;
                    case "System.Reflection.AssemblyTitleAttribute":
                        value = ((AssemblyTitleAttribute)attrib).Title; break;
                    case "System.Resources.NeutralResourcesLanguageAttribute":
                        value = ((NeutralResourcesLanguageAttribute)attrib).CultureName; break;
                    case "System.Resources.SatelliteContractVersionAttribute":
                        value = ((SatelliteContractVersionAttribute)attrib).Version; break;
                    case "System.Runtime.InteropServices.ComCompatibleVersionAttribute":
                        {
                            var x = ((ComCompatibleVersionAttribute)attrib);
                            value = x.MajorVersion + "." + x.MinorVersion + "." + x.RevisionNumber + "." + x.BuildNumber; break;
                        }
                    case "System.Runtime.InteropServices.ComVisibleAttribute":
                        value = ((ComVisibleAttribute)attrib).Value.ToString(); break;
                    case "System.Runtime.InteropServices.GuidAttribute":
                        value = ((GuidAttribute)attrib).Value; break;
                    case "System.Runtime.InteropServices.TypeLibVersionAttribute":
                        {
                            var x = ((TypeLibVersionAttribute)attrib);
                            value = x.MajorVersion + "." + x.MinorVersion; break;
                        }
                    case "System.Security.AllowPartiallyTrustedCallersAttribute":
                        value = "(Present)"; break;
                    default:
                        // debug.writeline("** unknown assembly attribute '" + TypeName + "'")
                        value = typeName; break;
                }

                if (nvc[name] == null)
                {
                    nvc.Add(name, value);
                }
            }
            try
            {
                nvc.Add("CodeBase", a.CodeBase.Replace("file:///", ""));
            }
            catch (NotSupportedException)
            {
                nvc.Add("CodeBase", "(not supported)");
            }
            // build date
            var dt = AssemblyBuildDate(a, false);
            nvc.Add("BuildDate", dt == DateTime.MaxValue ? "(unknown)" :
                dt.ToString("yyyy-MM-dd hh:mm tt"));
            // location
            try
            {
                nvc.Add("Location", a.Location);
            }
            catch (NotSupportedException)
            {
                nvc.Add("Location", "(not supported)");
            }
            // version
            try
            {
                if (a.GetName().Version.Major == 0 && a.GetName().Version.Minor == 0)
                {
                    nvc.Add("Version", "(unknown)");
                }
                else
                {
                    nvc.Add("Version", a.GetName().Version.ToString());
                }
            }
            catch (Exception)
            {
                nvc.Add("Version", "(unknown)");
            }

            nvc.Add("FullName", a.FullName);

            return nvc;
        }