Тот факт, что вам нужно , чтобы убедиться, что объект расположен, указывает на недостаток дизайна. Это нормально, если утилизация является вежливым или эффективным делом, но это не должно быть семантически необходимым .
Невозможно добиться принудительного удаления объекта с помощью оператора using
. Однако, что вы можете сделать, это сохранить флаг в объекте, который указывает, был ли объект удален или нет, а затем написать финализатор, который проверяет этот флаг. Если финализатор обнаружит, что объект не был удален, то вы можете иметь финализатор, скажем, завершить процесс через failfast. То есть настолько сурово наказывают пользователя, который пренебрег распоряжением объектом, что он вынужден либо исправить свою ошибку, либо прекратить использование вашего объекта.
Это не кажется мне хорошим, хорошим или вежливым, но вы единственный, кто знает, каковы ужасные, ужасные последствия неспособности избавиться от объекта. Лучше ли применять наказание к людям, которые не следуют вашим сумасшедшим правилам, чем жить с последствиями их несоблюдения правил, решать вам.