# GH_Goo<T> class

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

```cs
public abstract class GH_Goo<T> : IGH_Goo
```

Base class for IGH_Goo implementation. Takes care of some default behaviour.

**Remarks:** Feel free to implement IGH_Goo directly though.

**Type parameters:**

- `T`

**Derived types:** [DisplayColorGradient](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.display.displaycolorgradient.md), [DisplayColorStop](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.display.displaycolorstop.md), [GH_Boolean](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-boolean.md), [GH_Colour](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-colour.md), [GH_ComplexNumber](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-complexnumber.md), [GH_Culture](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-culture.md), [GH_GeometricGoo<T>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-geometricgoo-1.md), [GH_Guid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-guid.md), [GH_Integer](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-integer.md), [GH_Interval](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-interval.md), [GH_Interval2D](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-interval2d.md), [GH_Material](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-material.md), [GH_Matrix](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-matrix.md), [GH_MeshFace](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-meshface.md), [GH_MeshingParameters](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-meshingparameters.md), [GH_Number](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-number.md), [GH_ObjectWrapper](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-objectwrapper.md), [GH_String](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-string.md), [GH_StructurePath](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-structurepath.md), [GH_Time](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-time.md), [GH_Transform](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-transform.md), [GH_Vector](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-vector.md), [ModelFont](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.modelfont.md)

## Constructors

- [GH_Goo<T>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/ctor.md): (3 overloads) Blank constructor, m_value will be set to default (null for reference types, zeroes for value types)

## Fields

- [m_value](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/m-value.md)

## Properties

- [IsValid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/isvalid.md): Gets a value indicating whether or not the current value is valid.
- [IsValidWhyNot](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/isvalidwhynot.md): Gets a string describing the state of "invalidness". If the instance is valid, then this property should return Nothing or String.Empty.
- [TypeDescription](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/typedescription.md): Gets a description of the type of the implementation.
- [TypeName](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/typename.md): Gets the name of the type of the implementation.
- [Value](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/value.md): Gets or sets the internal data.

## Methods

- [CastFrom](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/castfrom.md): Attempt a cast from generic data.
- [CastTo<Q>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/castto.md): Attempt a cast to type Q.
- [Duplicate](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/duplicate.md): Make a complete duplicate of this instance. No shallow copies.
- [EmitProxy](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/emitproxy.md): Create a new proxy for this instance. Return Null if this class does not support proxies.
- [Read](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/read.md): Default behaviour is to return True.
- [ScriptVariable](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/scriptvariable.md): This function will be called when the local IGH_Goo instance disappears into a user Script. This would be an excellent place to cast your IGH_Goo type to a simple data type.
- [ToString](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/tostring.md): Creates a string description of the current instance value.
- [Write](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1/write.md): Default behaviour is to return True.
