using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace RomCheater.PluginFramework.Events { public interface IBaseEventArgs { object Sender { get; set; } } public class BaseEventArgs : IBaseEventArgs { static BaseEventArgs() { Empty = new BaseEventArgs(); } public static readonly BaseEventArgs Empty; public BaseEventArgs() :this(new object()) { } public BaseEventArgs(object sender) { Sender = sender; } #region IBaseEventArgs members public object Sender { get; set; } #endregion } [Serializable] public delegate void BaseEventHandler(BaseEventArgs e); [Serializable] public delegate void BaseEventHandler(TEventArgs e) where TEventArgs : BaseEventArgs; }