У меня есть «Статус» класс в C#, используется следующим образом:Enforcing требуется вызов функции
Status MyFunction()
{
if(...) // something bad
return new Status(false, "Something went wrong")
else
return new Status(true, "OK");
}
Вы получаете идею. Все абоненты из MyFunction должны проверить возвращенный статус:
Status myStatus = MyFunction();
if (! myStatus.IsOK())
// handle it, show a message,...
Ленивые абоненты, однако, может игнорировать статус.
MyFunction(); // call function and ignore returned Status
или
{
Status myStatus = MyFunction();
} // lose all references to myStatus, without calling IsOK() on it
Можно ли сделать это невозможно? например исключение броска
В общем: можно написать C# класс, на котором есть вызвать определенную функцию?
В версии класса C++ я могу написать тест на каком-то частном bool bIsChecked в деструкторе и позвонить в некоторые колокола, когда кто-то не проверяет этот экземпляр.
Какова эквивалентная опция в C#? Я где-то читал, что «вам не нужен деструктор в вашем классе C#»
Возможно ли использовать метод Dispose IDisposable interface?
В этом случае освобожденных ресурсов нет. Кроме того, это не определено , когда GC будет располагать объект. Когда он в конечном итоге удаляется, все еще можно узнать, где и когда вы проигнорировали этот конкретный экземпляр статуса? Ключевое слово «using» действительно помогает, но опять же, это не требуется для ленивых абонентов.
В соответствующей заметке я нашел этот вопрос: http://stackoverflow.com/questions/173670/why-is-there-no-raii-in-net – jan 2011-02-07 10:29:01