private LoadableClassInfo FindClassCore(LoadableClassInfo.Key key) { LoadableClassInfo info; if (_classesByKey.TryGetValue(key, out info)) { return(info); } return(null); }
private static LoadableClassInfo FindClassCore(LoadableClassInfo.Key key) { LoadableClassInfo info; if (_classesByKey.TryGetValue(key, out info)) { return(info); } CacheLoadedAssemblies(); if (_classesByKey.TryGetValue(key, out info)) { return(info); } return(null); }
private void AddClass(LoadableClassInfo info, string[] loadNames, bool throwOnError) { _classes.Add(info); bool isEntryPoint = false; foreach (var sigType in info.SignatureTypes) { _signatures[sigType] = true; foreach (var name in loadNames) { string nameCi = name.ToLowerInvariant(); var key = new LoadableClassInfo.Key(nameCi, sigType); if (_classesByKey.TryGetValue(key, out var infoCur)) { if (throwOnError) { throw Contracts.Except($"ComponentCatalog cannot map name '{name}' and SignatureType '{sigType}' to {info.Type.Name}, already mapped to {infoCur.Type.Name}."); } } else { _classesByKey.Add(key, info); } } if (sigType == typeof(SignatureEntryPointModule)) { isEntryPoint = true; } } if (isEntryPoint) { ScanForEntryPoints(info); } }
private static void AddClass(LoadableClassInfo info, string[] loadNames) { _classes.Enqueue(info); foreach (var sigType in info.SignatureTypes) { _signatures.TryAdd(sigType, true); foreach (var name in loadNames) { string nameCi = name.ToLowerInvariant(); var key = new LoadableClassInfo.Key(nameCi, sigType); if (!_classesByKey.TryAdd(key, info)) { var infoCur = _classesByKey[key]; // REVIEW: Fix this message to reflect the signature.... Console.Error.WriteLine( "CacheClassesFromAssembly: can't map name {0} to {1}, already mapped to {2}", name, info.Type.Name, infoCur.Type.Name); } } } }