# GH_UndoAction class

Namespace: [Grasshopper.Kernel.Undo](https://developer.rhino3d.com/api/gh1/namespace/grasshopper.kernel.undo.md) · Assembly: [Grasshopper](https://developer.rhino3d.com/api/gh1/assembly/grasshopper.md)

```cs
public abstract class GH_UndoAction : IGH_UndoAction
```

Base class implementation for undo actions.

**Derived types:** [GH_AddObjectAction](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.actions.gh-addobjectaction.md), [GH_ArchivedUndoAction](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-archivedundoaction.md), [GH_ObjectUndoAction](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-objectundoaction.md), [GH_WireAction](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.actions.gh-wireaction.md)

## Properties

- [ExpiresDisplay](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/expiresdisplay.md): Override this property if you want the Rhino viewport display to refresh upon undo completion.
- [ExpiresSolution](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/expiressolution.md): Override this property if you want the Grasshopper solution to refresh upon undo completion.
- [State](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/state.md)

## Methods

- [Internal_Redo](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/internal-redo.md)
- [Internal_Undo](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/internal-undo.md)
- [Read](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/read.md)
- [Redo](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/redo.md)
- [Undo](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/undo.md)
- [Write](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.undo.gh-undoaction/write.md)
