Esempio n. 1
0
        ConcurrentDictionary <string, IList <string> > LoadClrToXmlNs()
        {
            ConcurrentDictionary <string, IList <string> > result =
                XamlSchemaContext.CreateDictionary <string, IList <string> >();

            Assembly assembly = Assembly;

            if (assembly == null)
            {
                return(result);
            }
            foreach (XmlNsDefinition nsDef in NsDefs)
            {
                IList <string> xmlNamespaceList;
                if (!result.TryGetValue(nsDef.ClrNamespace, out xmlNamespaceList))
                {
                    xmlNamespaceList = new List <string>();
                    result.TryAdd(nsDef.ClrNamespace, xmlNamespaceList);
                }
                xmlNamespaceList.Add(nsDef.XmlNamespace);
            }

            string assemblyName = _fullyQualifyAssemblyName ?
                                  assembly.FullName : XamlSchemaContext.GetAssemblyShortName(assembly);

            foreach (KeyValuePair <string, IList <string> > clrToXmlNs in result)
            {
                // Sort namespaces in preference order
                List <string>     nsList   = (List <string>)clrToXmlNs.Value;
                NamespaceComparer comparer = new NamespaceComparer(this, assembly);
                nsList.Sort(comparer.CompareNamespacesByPreference);
                // Add clr-namespace form as last choice
                string clrNsUri = ClrNamespaceUriParser.GetUri(clrToXmlNs.Key, assemblyName);
                nsList.Add(clrNsUri);
            }
            // Convert to read-only lists so we can safely return these from public API
            MakeListsImmutable(result);
            return(result);
        }
        private ConcurrentDictionary <string, IList <string> > LoadClrToXmlNs()
        {
            ConcurrentDictionary <string, IList <string> > dict = XamlSchemaContext.CreateDictionary <string, IList <string> >();

            System.Reflection.Assembly assembly = this.Assembly;
            if (assembly != null)
            {
                foreach (XmlNsDefinition definition in this.NsDefs)
                {
                    IList <string> list;
                    if (!dict.TryGetValue(definition.ClrNamespace, out list))
                    {
                        list = new List <string>();
                        dict.TryAdd(definition.ClrNamespace, list);
                    }
                    list.Add(definition.XmlNamespace);
                }
                string assemblyName = this._fullyQualifyAssemblyName ? assembly.FullName : XamlSchemaContext.GetAssemblyShortName(assembly);
                foreach (KeyValuePair <string, IList <string> > pair in dict)
                {
                    List <string>     list2    = (List <string>)pair.Value;
                    NamespaceComparer comparer = new NamespaceComparer(this, assembly);
                    list2.Sort(new Comparison <string>(comparer.CompareNamespacesByPreference));
                    string uri = ClrNamespaceUriParser.GetUri(pair.Key, assemblyName);
                    list2.Add(uri);
                }
                this.MakeListsImmutable(dict);
            }
            return(dict);
        }