googman
@googman

Подтверждения серьезных операций

При выполнении серьезных операций принято запрашивать у пользователей их подтверждение.
А чем пользователи классов хуже? :)

public class AreYouSure
{
    private readonly Action _yes;
    public void Yes() { _yes(); }
    public void No() { /*do nothing*/ }
    public AreYouSure(Action yes) { this._yes = yes ?? (() => {}); }
}
 
***
 
public class LocalFile
{
    private readonly string _filename;
    public LocalFile(string filename) { this._filename = filename; }
    public AreYouSure Delete() { return new AreYouSure(() => File.Delete(this._filename)); }
}
 
***
 
class Program
{
    static void Main(string[] args)
    {
        LocalFile file = new LocalFile(@"c:test.txt");
        AreYouSure confirmation = file.Delete();
        confirmation.Yes();
    }
}

P.S. Запостить в «Кодобред» не смог, поэтому публикую тут.
  • Вопрос задан
  • 2322 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Vampiro
а где поставить галочку «для всех следующих 100500 операций»?
Ответ написан
Комментировать
unconnected
@unconnected
Ждем расширение для Visual Studio, которое будет автоматически комплитить Confirm.Yes() для всех объектов такого класса :-D
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы