public Assembly FindAssembly(AssemblyKey key) { if (!_assemblies.ContainsKey(key)) { return null; } return _assemblies[key]; }
public override RuntimeDataAccessModelInfo GetDataAccessModelAssembly(Type dataAccessModelType, DataAccessModelConfiguration configuration) { var key = new AssemblyKey(dataAccessModelType, configuration); RuntimeDataAccessModelInfo runtimeDataAccessModelInfo; lock (this.assemblyBuildInfosByKey) { if (!this.assemblyBuildInfosByKey.TryGetValue(key, out runtimeDataAccessModelInfo)) { runtimeDataAccessModelInfo = this.provider.GetDataAccessModelAssembly(dataAccessModelType, configuration); this.assemblyBuildInfosByKey[key] = runtimeDataAccessModelInfo; } } return(runtimeDataAccessModelInfo); }
public override RuntimeDataAccessModelInfo GetDataAccessModelAssembly(Type dataAccessModelType, DataAccessModelConfiguration configuration) { var key = new AssemblyKey(dataAccessModelType, configuration); RuntimeDataAccessModelInfo runtimeDataAccessModelInfo; lock (this.assemblyBuildInfosByKey) { if (!this.assemblyBuildInfosByKey.TryGetValue(key, out runtimeDataAccessModelInfo)) { runtimeDataAccessModelInfo = this.provider.GetDataAccessModelAssembly(dataAccessModelType, configuration); this.assemblyBuildInfosByKey[key] = runtimeDataAccessModelInfo; } } return runtimeDataAccessModelInfo; }
public override RuntimeDataAccessModelInfo GetDataAccessModelAssembly(Type dataAccessModelType, DataAccessModelConfiguration configuration) { var key = new AssemblyKey(dataAccessModelType, new DataAccessModelConfigurationUniqueKey(configuration)); lock (this.buildingSet) { while (true) { if (this.assemblyBuildInfosByKey.TryGetValue(key, out var runtimeDataAccessModelInfo)) { return(runtimeDataAccessModelInfo); } if (this.buildingSet.Contains(key)) { Monitor.Wait(this.buildingSet); continue; } try { this.buildingSet.Add(key); runtimeDataAccessModelInfo = this.provider.GetDataAccessModelAssembly(dataAccessModelType, configuration); this.assemblyBuildInfosByKey[key] = runtimeDataAccessModelInfo; return(runtimeDataAccessModelInfo); } finally { this.buildingSet.Remove(key); Monitor.PulseAll(this.buildingSet); } } } }
public void StartAssembly(AssemblyKey key) { if (key == null) throw new ArgumentNullException("key"); _assemblies.Push(key); }
public bool TryGetAssemblySet(AssemblyKey assemblyKey, out AssemblyResolutionSet assemblySet) { return(_key2AssemblySets.TryGetValue(assemblyKey, out assemblySet)); }