# EventBase<T>

> Generic base class for events, implementing event pooling and automatic registration to the event type system.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.UIElements](/engine/6000.5/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule
* **Inherits from:** [EventBase](/engine/6000.5/script-reference/unityengine/uielements/eventbase.md)
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public abstract class EventBase<T> : EventBase, IDisposable where T : EventBase<T>, new()
```

## Properties

| Property                                                                                        | Description                                                                                           |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [eventTypeId](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/eventtypeid.md) | See [\_eventTypeId](/engine/6000.5/script-reference/unityengine/uielements/eventbase/eventtypeid.md). |

## Methods

| Method                                                                                  | Description                                       |
| --------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [Dispose](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/dispose.md) | Implementation of IDispose.                       |
| [Init](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/init.md)       | Resets all event members to their initial values. |

## Static Methods

| Method                                                                                                      | Description                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [GetPooled](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/getpooled.md)                 | Gets an event from the event pool. Use this function instead of creating new events. Events obtained using this method need to be released back to the pool. You can use `Dispose()` to release them. |
| [SetCreateFunction](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/setcreatefunction.md) | Allows to provide a function to create the event instance without relying on Activator.CreateInstance.                                                                                                |
| [TypeId](/engine/6000.5/script-reference/unityengine/uielements/eventbase1/typeid.md)                       | Retrieves the type ID for this event instance.                                                                                                                                                        |

## Inheritance

**Inherited Members:**

* [EventBase.RegisterEventType()](/engine/6000.5/script-reference/unityengine/uielements/eventbase/registereventtype.md)
* [EventBase.PreDispatch(IPanel)](/engine/6000.5/script-reference/unityengine/uielements/eventbase/predispatch.md#predispatch\(ipanel\))
* [EventBase.PostDispatch(IPanel)](/engine/6000.5/script-reference/unityengine/uielements/eventbase/postdispatch.md#postdispatch\(ipanel\))
* [EventBase.StopPropagation()](/engine/6000.5/script-reference/unityengine/uielements/eventbase/stoppropagation.md)
* [EventBase.StopImmediatePropagation()](/engine/6000.5/script-reference/unityengine/uielements/eventbase/stopimmediatepropagation.md)
* [EventBase.timestamp](/engine/6000.5/script-reference/unityengine/uielements/eventbase/timestamp.md)
* [EventBase.bubbles](/engine/6000.5/script-reference/unityengine/uielements/eventbase/bubbles.md)
* [EventBase.tricklesDown](/engine/6000.5/script-reference/unityengine/uielements/eventbase/tricklesdown.md)
* [EventBase.ignoreDisabledElements](/engine/6000.5/script-reference/unityengine/uielements/eventbase/ignoredisabledelements.md)
* [EventBase.target](/engine/6000.5/script-reference/unityengine/uielements/eventbase/target.md)
* [EventBase.isPropagationStopped](/engine/6000.5/script-reference/unityengine/uielements/eventbase/ispropagationstopped.md)
* [EventBase.isImmediatePropagationStopped](/engine/6000.5/script-reference/unityengine/uielements/eventbase/isimmediatepropagationstopped.md)
* [EventBase.propagationPhase](/engine/6000.5/script-reference/unityengine/uielements/eventbase/propagationphase.md)
* [EventBase.currentTarget](/engine/6000.5/script-reference/unityengine/uielements/eventbase/currenttarget.md)
* [EventBase.dispatch](/engine/6000.5/script-reference/unityengine/uielements/eventbase/dispatch.md)
* [EventBase.imguiEvent](/engine/6000.5/script-reference/unityengine/uielements/eventbase/imguievent.md)
* [EventBase.originalMousePosition](/engine/6000.5/script-reference/unityengine/uielements/eventbase/originalmouseposition.md)
* [EventBase.pooled](/engine/6000.5/script-reference/unityengine/uielements/eventbase/pooled.md)
