Я сталкиваюсь с ситуацией, когда у меня есть зависимые объекты, и я хотел бы иметь возможность удалить объект и все ссылки на него.
Скажем, у меня есть объектная структура, подобная приведенному ниже, с типом Branch, который ссылается на два узла.
public class Node
{
// Has Some Data!
}
public class Branch
{
// Contains references to Nodes
public Node NodeA
public Node NodeB
}
public class Graph
{
public List<Node> Nodes;
public List<Branch> Branches;
}
Если я удаляю Node из списка Nodes в классе Graph, все еще возможно, что один или несколько объектов Branch по-прежнему содержат ссылку на удаленный Node, таким образом, сохраняя его в памяти, тогда как на самом деле, что бы я хотел быть для установки любых ссылок на удаленный узел равным нулю и позволить запускать сборку мусора.
Кроме перечисления через каждую Ветвь и последовательной проверки каждой ссылки на Узел, есть ли какие-нибудь умные идеи о том, как удалить ссылки на Узел в каждом экземпляре Ветви И, действительно, любой другой класс, который ссылается на удаленный Узел?