protected void AddClrNamespaceWorkaround(IAssembly assembly, string clrNamespace, string prefix) { Dictionary<string, string> strs; XmlnsDefinitionMap.AssemblyNamespace assemblyNamespace = new XmlnsDefinitionMap.AssemblyNamespace(assembly, clrNamespace); if (!this.clrNamespaceWorkaround.TryGetValue(assemblyNamespace.Name, out strs)) { strs = new Dictionary<string, string>(); this.clrNamespaceWorkaround.Add(assemblyNamespace.Name, strs); } if (!strs.ContainsKey(clrNamespace)) { strs.Add(clrNamespace, prefix); } }
public Type GetType(string typeName) { Type type; Type type1 = null; if (this.typeNameCache.TryGetValue(typeName, out type1)) { return type1; } using (IEnumerator<XmlnsDefinitionMap.AssemblyNamespace> enumerator = this.AssemblyNamespaces.GetEnumerator()) { while (enumerator.MoveNext()) { XmlnsDefinitionMap.AssemblyNamespace current = enumerator.Current; IAssembly assembly = current.Assembly; string str = TypeHelper.CombineNamespaceAndTypeName(current.ClrNamespace, typeName); try { type1 = PlatformTypeHelper.GetType(assembly, str); if (type1 != null) { IType type2 = this.typeResolver.GetType(type1); if (!this.typeResolver.PlatformMetadata.IsNullType(type2)) { if (TypeHelper.IsSet((assembly.CompareTo(this.targetAssembly) ? MemberAccessTypes.PublicOrInternal : MemberAccessTypes.Public), PlatformTypeHelper.GetMemberAccess(type1))) { this.typeNameCache.Add(typeName, type1); type = type1; return type; } } } } catch (ArgumentException argumentException) { type = null; return type; } } this.typeNameCache.Add(typeName, null); return null; } return type; }
public IXmlNamespace GetNamespace(IAssembly assemblyReference, string clrNamespace) { IXmlNamespace key; string name = assemblyReference.Name; IXmlNamespace xmlNamespace = null; Dictionary<IXmlNamespace, XmlnsDefinitionMap.XmlNamespaceTypeMap>.Enumerator enumerator = this.map.GetEnumerator(); try { while (enumerator.MoveNext()) { KeyValuePair<IXmlNamespace, XmlnsDefinitionMap.XmlNamespaceTypeMap> current = enumerator.Current; using (IEnumerator<XmlnsDefinitionMap.AssemblyNamespace> enumerator1 = current.Value.AssemblyNamespaces.GetEnumerator()) { while (enumerator1.MoveNext()) { XmlnsDefinitionMap.AssemblyNamespace assemblyNamespace = enumerator1.Current; if (!(assemblyNamespace.Name == name) || !(assemblyNamespace.ClrNamespace == clrNamespace)) { continue; } if (current.Key == XmlNamespace.AvalonXmlNamespace || current.Key == XmlNamespace.JoltXmlNamespace) { key = current.Key; return key; } else { xmlNamespace = current.Key; } } } } return xmlNamespace; } finally { ((IDisposable)enumerator).Dispose(); } return key; }