com.alicizax.unity/Runtime/Base/EventPool/EventPool.EventNode.cs

50 lines
1.3 KiB
C#
Raw Normal View History

2025-02-07 16:04:12 +08:00
namespace AlicizaX.Runtime
{
public sealed partial class EventPool<T> where T : BaseEventArgs
{
/// <summary>
/// 事件结点。
/// </summary>
private sealed class EventNode : IReference
{
private object _sender = null;
private T _eventArgs = null;
/// <summary>
/// 发送者
/// </summary>
public object Sender
{
get { return _sender; }
}
/// <summary>
/// 事件参数
/// </summary>
public T EventArgs
{
get { return _eventArgs; }
}
/// <summary>
/// 创建事件节点
/// </summary>
/// <param name="sender"></param>
/// <param name="eventArgs"></param>
/// <returns></returns>
public static EventNode Create(object sender, T eventArgs)
{
EventNode eventNodeNode = ReferencePool.Acquire<EventNode>();
eventNodeNode._sender = sender;
eventNodeNode._eventArgs = eventArgs;
return eventNodeNode;
}
public void Clear()
{
_sender = null;
_eventArgs = null;
}
}
}
}