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