# IGH_Goo interface

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 interface IGH_Goo : GH_ISerializable
```

Base interface for all Data inside Grasshopper. Every parameter must implement a type of Goo.

**Derived types:** [GH_Field](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-field.md), [GH_Goo<T>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-goo-1.md), [GH_LonLatCoordinate](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-lonlatcoordinate.md), [GH_Predicate](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.gh-predicate.md), [IGH_GeometricGoo](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-geometricgoo.md), [IGH_ModelData](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.params.igh-modeldata.md), [IGH_ReferencedData](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-referenceddata.md), [ModelColor](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.modelcolor.md), [ModelComponentContent](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.modelcomponentcontent.md), [ModelFont](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.modelfont.md), [ModelLineWidth](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.drafting.modellinewidth.md), [ModelViewport](https://developer.rhino3d.com/api/gh1/type/grasshopper.rhinoceros.display.modelviewport.md)

## Properties

- [IsValid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/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.igh-goo/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.igh-goo/typedescription.md): Gets a description of the type of the implementation.
- [TypeName](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/typename.md): Gets the name of the type of the implementation.

## Methods

- [CastFrom](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/castfrom.md): Attempt a cast from generic object
- [CastTo<T>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/castto.md): Attempt a cast to type T
- [Duplicate](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/duplicate.md): Make a complete duplicate of this instance. No shallow copies.
- [EmitProxy](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/emitproxy.md): Create a new proxy for this instance. Return Null if this class does not support proxies.
- [ScriptVariable](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.types.igh-goo/scriptvariable.md): This function will be called when the local IGH_Goo instance disapears 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.igh-goo/tostring.md): Creates a string description of the current instance value

## Inherited Members

- From [GH_ISerializable](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable.md): [Read](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/read.md), [Write](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/write.md)
