Exemple #1
0
        public bool Remove(string serviceAssemblyQualifiedName)
        {
            ServiceRequirement req = Find(serviceAssemblyQualifiedName) as ServiceRequirement;

            if (req != null)
            {
                Debug.Assert(req.Holder == this);
                if (!CanChange(ChangeStatus.Delete, req.AssemblyQualifiedName, req.Requirement))
                {
                    return(false);
                }
                if (_first == req)
                {
                    _first = req.NextElement;
                }
                else
                {
                    this.First(r => r.NextElement == req).NextElement = req.NextElement;
                }
                req.Holder = null;
                --_count;
                Change(ChangeStatus.Delete, req.AssemblyQualifiedName, req.Requirement);
            }
            return(true);
        }
Exemple #2
0
        public IEnumerator <ServiceRequirement> GetEnumerator()
        {
            ServiceRequirement e = _first;

            while (e != null)
            {
                yield return(e);

                e = e.NextElement;
            }
        }
Exemple #3
0
 public bool Clear()
 {
     if (!CanChange(ChangeStatus.ContainerClear, string.Empty, RunningRequirement.Optional))
     {
         return(false);
     }
     foreach (ServiceRequirement r in this)
     {
         r.Holder = null;
     }
     _first = null;
     _count = 0;
     Change(ChangeStatus.ContainerClear, string.Empty, RunningRequirement.Optional);
     return(true);
 }
Exemple #4
0
        public ServiceRequirement AddOrSet(string serviceAssemblyQualifiedName, RunningRequirement requirement)
        {
            ServiceRequirement req = this.FirstOrDefault(r => r.AssemblyQualifiedName == serviceAssemblyQualifiedName);

            if (req != null)
            {
                if (req.Requirement != requirement && CanChange(ChangeStatus.Update, serviceAssemblyQualifiedName, requirement))
                {
                    req.Requirement = requirement;
                    Change(ChangeStatus.Update, serviceAssemblyQualifiedName, requirement);
                }
            }
            else if (CanChange(ChangeStatus.Add, serviceAssemblyQualifiedName, requirement))
            {
                req             = new ServiceRequirement(this, serviceAssemblyQualifiedName, requirement);
                req.NextElement = _first;
                _first          = req;
                _count++;
                Change(ChangeStatus.Add, serviceAssemblyQualifiedName, requirement);
            }
            return(req);
        }
Exemple #5
0
        public bool Contains(object item)
        {
            ServiceRequirement e = item as ServiceRequirement;

            return(e != null ? e.Holder == this : false);
        }