private static Boolean OrdenTopologicoVisitar(IContextoPersistencia[] contextos, HashSet<IContextoPersistencia> disponibles, HashSet<IContextoPersistencia> temporario, List<IContextoPersistencia> topologico, IContextoPersistencia nodo) { if (temporario.Contains(nodo)) return false; if (!disponibles.Contains(nodo)) return true; temporario.Add(nodo); foreach (var contexto in contextos) if (contexto.Dependencias.Contains(nodo.TipoElemento)) if (!OrdenTopologicoVisitar(contextos, disponibles, temporario, topologico, contexto)) return false; temporario.Remove(nodo); disponibles.Remove(nodo); topologico.Add(nodo); return true; }
private static List<IContextoPersistencia> OrdenTopologico(IContextoPersistencia[] contextos) { var disponibles = new HashSet<IContextoPersistencia>(contextos); var temporario = new HashSet<IContextoPersistencia>(); var topologico = new List<IContextoPersistencia>(contextos.Length); while (disponibles.Count > 0) { var nodo = disponibles.First(); if (!OrdenTopologicoVisitar(contextos, disponibles, temporario, topologico, nodo)) throw new ArgumentException("no es DAG"); } topologico.Reverse(); return topologico; }
/// <sumary> /// Inicia uma nova instância da classe <see cref"ServicoConsultaProcessos" /> /// </sumary> /// <param name="umContextoPersistencia">um implementação da interface <see cref="IContextoPersistencia"/></param> /// <param name="umLogger">um implementação da interface <see cref="ILogger"/></param> public ServicoConsultaProcessos(IContextoPersistencia umContextoPersistencia, ILogger umLogger) { this.contextoPersistencia = umContextoPersistencia; this.logger = umLogger; }
public MongoDBRepositorioResponsaveis(IContextoPersistencia umContextoPersistencia, ILogger umLogger) { this.contextoPersistencia = umContextoPersistencia; this.logger = umLogger; }
public ServicoConsultaResponsaveis(IContextoPersistencia umContextoPersistencia, ILogger umLogger) { this.contextoPersistencia = umContextoPersistencia; this.logger = umLogger; }
public MongoDBRepositorioProcessos(IContextoPersistencia umContextoPersistencia, ILogger umLogger) { this.contextoPersistencia = umContextoPersistencia; this.logger = umLogger; }