public void Unregister(IComponentContainer cont) { ComponentContainer container = (ComponentContainer)cont; foreach (IComponent component in container.Components) { component2Owner.Remove(component); foreach (Type type in ComponentContainer.GetDerivedTypes(component)) { componentType2ComponentInstances[type].Remove(component); componentType2ContainerInstances[type].Remove(container); } } container.ClearComponents(); containers.Remove(cont); }