internal virtual void Visit(InstanceActivationRequestEvent evt) { var requests = pushFreeParameterSubstitutionRequests(evt); if (!requests.Any()) { //we have got a complete instance Push(new InstanceActiveEvent(evt.Instance, canBeReferenced: evt.ActivationPhrases.Any(), evt)); } }
private IEnumerable <IncompleteRelationEvent> pushFreeParameterSubstitutionRequests(InstanceActivationRequestEvent evt) { var requests = new List <IncompleteRelationEvent>(); var targetDefinitions = GetParameterDefinitions(evt.Instance); var filteredTargetDefinitions = targetDefinitions.Where(t => GetValue(evt.Instance, t.Property) == null).ToArray(); foreach (var targetDefinition in filteredTargetDefinitions) { var request = new IncompleteRelationEvent(evt.Instance, targetDefinition.Property, null); requests.Add(request); Push(request); //no pops because all the parameters will be requested in a serie } return(requests); }