void AddMappingToNamespace(XamlNamespace ns, AssemblyNamespaceMapping mapping)
        {
            ns.ClrNamespaces.Add(mapping);

            List <string> xmlNamespaceList;

            if (reverseDictList.TryGetValue(mapping, out xmlNamespaceList))
            {
                if (!xmlNamespaceList.Contains(ns.XmlNamespace))
                {
                    xmlNamespaceList.Add(ns.XmlNamespace);
                }
            }
            else
            {
                reverseDictList.Add(mapping, new List <string>()
                {
                    ns.XmlNamespace
                });
            }

            string xmlNamespace;

            if (reverseDict.TryGetValue(mapping, out xmlNamespace))
            {
                if (xmlNamespace == XamlConstants.PresentationNamespace)
                {
                    return;
                }
            }
            reverseDict[mapping] = ns.XmlNamespace;
        }
        private Type FindTypeInMappedAssembly(AssemblyNamespaceMapping mapping, string assemblyName, string typeName)
        {
            var type = mapping.Assembly.GetTypes().FirstOrDefault(t =>
            {
                var a = t.GetCustomAttribute <DtoTypeAttribute>();
                if (a == null)
                {
                    return(false);
                }
                if (a.AssemblyName == assemblyName && a.TypeName == typeName)
                {
                    return(true);
                }
                return(false);
            });

            if (type != null)
            {
                return(type);
            }
            if (mapping.OriginalNamespace.Length >= typeName.Length)
            {
                return(null);
            }
            var newTypeName = mapping.ProxyNamespace + typeName.Substring(mapping.OriginalNamespace.Length);

            return(mapping.Assembly.GetType(newTypeName));
        }
        /// <summary>
        /// Gets the XML namespace that can be used for the specified assembly/namespace combination.
        /// </summary>
        public string GetXmlNamespaceFor(Assembly assembly, string @namespace, bool getClrNamespace = false)
        {
            AssemblyNamespaceMapping mapping = new AssemblyNamespaceMapping(assembly, @namespace);
            string xmlNamespace;

            if (!getClrNamespace && reverseDict.TryGetValue(mapping, out xmlNamespace))
            {
                return(xmlNamespace);
            }
            else
            {
                return("clr-namespace:" + mapping.Namespace + ";assembly=" + mapping.Assembly.GetName().Name);
            }
        }
Exemple #4
0
        void AddMappingToNamespace(XamlNamespace ns, AssemblyNamespaceMapping mapping)
        {
            ns.ClrNamespaces.Add(mapping);

            string xmlNamespace;

            if (reverseDict.TryGetValue(mapping, out xmlNamespace))
            {
                if (xmlNamespace == XamlConstants.PresentationNamespace)
                {
                    return;
                }
            }
            reverseDict[mapping] = ns.XmlNamespace;
        }
        /// <summary>
        /// Gets the XML namespaces that can be used for the specified assembly/namespace combination.
        /// </summary>
        public List <string> GetXmlNamespacesFor(Assembly assembly, string @namespace, bool getClrNamespace = false)
        {
            AssemblyNamespaceMapping mapping = new AssemblyNamespaceMapping(assembly, @namespace);
            List <string>            xmlNamespaces;

            if (!getClrNamespace && reverseDictList.TryGetValue(mapping, out xmlNamespaces))
            {
                return(xmlNamespaces);
            }
            else
            {
                return(new List <string>()
                {
                    "clr-namespace:" + mapping.Namespace + ";assembly=" + mapping.Assembly.GetName().Name
                });
            }
        }