# GH_InstanceDescription class

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

```cs
public class GH_InstanceDescription : IGH_InstanceDescription
```

Base implementation of IGH_InstanceDescription. Consider deriving from this class rather than implementing IGH_InstanceDescription from scratch.

**Derived types:** [GH_DocumentObject](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-documentobject.md)

## Constructors

- [GH_InstanceDescription](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/ctor.md): (4 overloads) Create a new blank instance.

## Properties

- [Category](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/category.md): Gets or sets the Category in which this object belongs. If HasCategory() returns false, this field has no meaning.
- [Description](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/description.md): Gets or sets the description of the object. This field typically remains fixed during the lifetime of an object.
- [HasCategory](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/hascategory.md): Gets whether or not the Category field has been set.
- [HasSubCategory](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/hassubcategory.md): Gets whether or not the SubCategory field has been set.
- [InstanceDescription](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/instancedescription.md): Gets a description of the current state of the object. This field is usually the same as the Description() field, but it might be variable when overridden.
- [InstanceGuid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/instanceguid.md): Gets the ID of this runtime instance.
- [Keywords](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/keywords.md): Gets a list of additional keywords that describe the object. Typically this list is empty but you can override this property to aid in object searches.
- [Name](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/name.md): Gets or sets the name of the object. This field typically remains fixed during the lifetime of an object.
- [NickName](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/nickname.md): Gets or sets the nickname of the object. This field can be changed by the user.
- [SubCategory](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/subcategory.md): Gets or sets the SubCategory in which this object belongs. If HasSubCategory() returns false, this field has no meaning.

## Methods

- [CopyFrom](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/copyfrom.md): Copy all fields (except the instance ID) from another instance description.
- [NewInstanceGuid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/newinstanceguid.md): (2 overloads) Generate a new random instance GUID
- [Read](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/read.md): Default deserialization. Only retrieves Name, NickName, Description and InstanceGuid fields. If you want to retrieve additional fields use ReadFull() instead. However, ReadFull() will only work if the archive was written using WriteFull().
- [ReadFull](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/readfull.md): GH_InstanceDescription does not by default serialize all fields. Use this function to read all fields from the archive. This method is compatible with the default Write()/Read() operations.
- [Write](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/write.md): Default serialization. Only stores Name, NickName, Description and InstanceGuid fields. If you want to store additional fields use WriteFull() instead.
- [WriteFull](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-instancedescription/writefull.md): GH_InstanceDescription does not by default serialize all fields. Use this function to write all fields to the archive. This method is compatible with the default Write()/Read() operations.
