Возможно ли это сразу же позвонить и отказаться от подписки на события в этом контексте? context_ используется для управления простой statemachine, которую мы запускаем и останавливаем по существу, создавая новую.C# Dispose(), отписаться от событий
class ClassA
{
StateContext context_;
void SomeMethod()
{
if(context_ != null)
context_.Dispose();
context_ = new StateContext();
}
class StateContext : IDisposable
{
SubClassA()
{
//Subscribe to an event
}
void Dispose()
{
//unsubscribe to an Event
}
}
}
Нет, вы нарушаете договор с IDisposable. Нарушения контракта требуют дополнительного внимания и тяжелых комментариев. Пока класс не является общедоступным, вы с ним справитесь. –
Если фактический код действительно похож на код примера, вы можете просто просто «Dispose» в «Unsubscribe», а не реализовывать «IDisposable» и по-прежнему иметь такое же поведение без необходимости спрашивать: «Мне разрешено создавать методы, которые выполняют мои требуемая логика " – SimpleVar