Итак, решения по управлению ресурсами не могут дать все и сразу. А если реализовать детерминированное завершение лишь для тех объектов, для которых оно, по вашему мнению, действительно нужно? Команда разработчиков .NET долго размышляла об этом. Не забывайте, что все это происходило в контексте необходимости точного дублирования семантики Visual Basic 6 в новой системе. Большая часть сделанных выводов применима и сейчас, но некоторые давно отброшенные идеи теперь выглядят привлекательно (например, методы управления ресурсами как альтернатива "прозрачной" семантике времени жизни в Visual Basic 6).
Первая попытка заключалась просто в том, чтобы пометить класс как требующий детерминированного завершения атрибутом или наследованием от "специального" класса. В результате этого производится подсчет ссылок на объект. Было проверено множество решений как с подклассами
System.Object,
так и с возможностью замены корня иерархии классов другим классом, чтобы объединить подход с подсчетом ссылок с альтернативными. Увы, при этом встретился ряд непреодолимых проблем, описанных ниже.