Пример #1
0
 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);
                    }
                }
            }
        }
Пример #5
0
 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));
 }