using System; namespace Wayne.Lib { /// <summary> /// The EventArgs is used when ... /// </summary> public class ReserveCompletedEventArgs<TReserved> : AsyncCompletedEventArgs { #region Fields TReserved reservedObject; #endregion #region Construction /// <summary> /// Initializes a new instance of the class ReserveCompletedEventArgs where the reservation was successful. /// </summary> /// <param name="reservedObject">The reserved object.</param> /// <param name="userToken">An optional user token.</param> public ReserveCompletedEventArgs(TReserved reservedObject, object userToken) : base(true, userToken) { this.reservedObject = reservedObject; } /// <summary> /// Initializes a new instance of the class ReserveCompletedEventArgs where the reservation failed. /// </summary> /// <param name="userToken">An optional user token.</param> public ReserveCompletedEventArgs(object userToken) : base(false, userToken) { } #endregion #region Properties /// <summary> /// The reserved object. /// </summary> /// <exception cref="ObjectNotReservedException">There was no reserved object since the reservation failed.</exception> public TReserved ReservedObject { get { if (!Success) throw new ObjectNotReservedException("There was no reserved object of the type " + typeof(TReserved).FullName + " since the reservation failed."); return reservedObject; } } #endregion } }