using System; namespace DHT.Desktop.Dialogs { public static class DialogResult { public enum All { Ok, Yes, No, Cancel } public enum OkCancel { Closed, Ok, Cancel } public enum YesNo { Closed, Yes, No } public enum YesNoCancel { Closed, Yes, No, Cancel } public static OkCancel ToOkCancel(this All? result) { return result switch { null => OkCancel.Closed, All.Ok => OkCancel.Ok, All.Cancel => OkCancel.Cancel, _ => throw new ArgumentException("Cannot convert dialog result " + result + " to ok/cancel.") }; } public static YesNo ToYesNo(this All? result) { return result switch { null => YesNo.Closed, All.Yes => YesNo.Yes, All.No => YesNo.No, _ => throw new ArgumentException("Cannot convert dialog result " + result + " to yes/no.") }; } public static YesNoCancel ToYesNoCancel(this All? result) { return result switch { null => YesNoCancel.Closed, All.Yes => YesNoCancel.Yes, All.No => YesNoCancel.No, All.Cancel => YesNoCancel.Cancel, _ => throw new ArgumentException("Cannot convert dialog result " + result + " to yes/no/cancel.") }; } } }