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); }
public IEnumerator <ServiceRequirement> GetEnumerator() { ServiceRequirement e = _first; while (e != null) { yield return(e); e = e.NextElement; } }
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); }
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); }
public bool Contains(object item) { ServiceRequirement e = item as ServiceRequirement; return(e != null ? e.Holder == this : false); }