示例#1
0
 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);
 }
示例#2
0
        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);
        }