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 string GetNameForType(Type type) { Assembly assembly = type.Assembly; this.RegisterAssembly(assembly); lock (KnownProxyTypesProvider.ThisLock) { AssemblyBasedKnownProxyTypesProvider.EarlyBoundNameMap earlyBoundNameMap = (AssemblyBasedKnownProxyTypesProvider.EarlyBoundNameMap)null; if (AssemblyBasedKnownProxyTypesProvider._earlyBoundNamesMapByAssembly.TryGetValue(assembly, out earlyBoundNameMap)) { if (earlyBoundNameMap.ContainsKey(type)) { return(earlyBoundNameMap[type]); } } } return((string)null); }