using System; namespace PRSDesktop { public enum CalendarHandledStatus { Handled, Unhandled, Cancel } public interface ICalendarHandledEventArgs { object Item { get; } CalendarHandledStatus Status { get; set; } } public interface ICalendarHandledEventArgs : ICalendarHandledEventArgs { T? Item { get; } } public class CalendarHandledEventArgs : EventArgs, ICalendarHandledEventArgs { public T? Item { get; } object ICalendarHandledEventArgs.Item => Item; public CalendarHandledStatus Status { get; set; } public CalendarHandledEventArgs(T? item) { Item = item; Status = CalendarHandledStatus.Unhandled; } } public delegate void CalendarHandledEvent(object sender, ICalendarHandledEventArgs args); }