protected override void AddTypeMapping(Assembly assembly, Type type, string proxyName) { AssemblyBasedKnownProxyTypesProvider.EarlyBoundTypeMap earlyBoundTypeMap = (AssemblyBasedKnownProxyTypesProvider.EarlyBoundTypeMap)null; AssemblyBasedKnownProxyTypesProvider._earlyBoundTypesMapByAssembly.TryGetValue(assembly, out earlyBoundTypeMap); if (earlyBoundTypeMap == null) { earlyBoundTypeMap = new AssemblyBasedKnownProxyTypesProvider.EarlyBoundTypeMap(); AssemblyBasedKnownProxyTypesProvider._earlyBoundTypesMapByAssembly[assembly] = earlyBoundTypeMap; } if (earlyBoundTypeMap.ContainsKey(proxyName)) { throw new ArgumentException(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "A proxy type with the name {0} has been defined by multiple types. Current type: {1}, Existing type: {2}", (object)proxyName, (object)type.AssemblyQualifiedName, (object)earlyBoundTypeMap[proxyName].AssemblyQualifiedName), proxyName); } earlyBoundTypeMap.Add(proxyName, type); AssemblyBasedKnownProxyTypesProvider.EarlyBoundNameMap earlyBoundNameMap = (AssemblyBasedKnownProxyTypesProvider.EarlyBoundNameMap)null; AssemblyBasedKnownProxyTypesProvider._earlyBoundNamesMapByAssembly.TryGetValue(assembly, out earlyBoundNameMap); if (earlyBoundNameMap == null) { earlyBoundNameMap = new AssemblyBasedKnownProxyTypesProvider.EarlyBoundNameMap(); AssemblyBasedKnownProxyTypesProvider._earlyBoundNamesMapByAssembly[assembly] = earlyBoundNameMap; } if (earlyBoundNameMap.ContainsKey(type)) { throw new ArgumentException(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "A proxy type with the name {0} has been defined by multiple types. Current type: {1}, Existing type: {2}", (object)proxyName, (object)type.AssemblyQualifiedName, (object)type.AssemblyQualifiedName), proxyName); } earlyBoundNameMap.Add(type, proxyName); }
public override Type GetTypeForName(string name, Assembly proxyTypesAssembly) { if (proxyTypesAssembly == (Assembly)null) { return((Type)null); } this.RegisterAssembly(proxyTypesAssembly); lock (KnownProxyTypesProvider.ThisLock) { AssemblyBasedKnownProxyTypesProvider.EarlyBoundTypeMap earlyBoundTypeMap = (AssemblyBasedKnownProxyTypesProvider.EarlyBoundTypeMap)null; if (AssemblyBasedKnownProxyTypesProvider._earlyBoundTypesMapByAssembly.TryGetValue(proxyTypesAssembly, out earlyBoundTypeMap)) { if (earlyBoundTypeMap.ContainsKey(name)) { return(earlyBoundTypeMap[name]); } } } return((Type)null); }