# Component class

Namespace: [Grasshopper2.Components](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.components.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public abstract class Component : ActiveObject, IBakeAware, IGuidAware
```

Abstract class for all components.

**Derived types:** [AiComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aicomponent.md), [Chain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.chain.md), [Cluster](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster.md), [ConstraintComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.constraintcomponent.md), [CreateMessages](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.createmessages.md), [CustomiseRibbon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.customiseribbon.md), [DataFromFile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.datafromfile.md), [DataToFile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.datatofile.md), [DebugMeshWithoutNormals](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.debugmeshwithoutnormals.md), [DebugStackMesh](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.debugstackmesh.md), [DebugUpperVertices](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.debuguppervertices.md), [DelayingComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.delayingcomponent.md), [GH1InteropComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.gh1interopcomponent.md), [GraphMapperComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.graphmappercomponent.md), [LogRecord](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.logrecord.md), [MigrationAideComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.migration.migrationaidecomponent.md), [ModularComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularcomponent.md), [ReadTextFile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.readtextfile.md), [SubDRaceProbe](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.subdraceprobe.md), [SvgThemedIconExample](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.displayexamples.svgthemediconexample.md), [TestDisplaySettings](https://developer.rhino3d.com/api/gh2/type/grasshopper2.display.testdisplaysettings.md), [TestWireframe](https://developer.rhino3d.com/api/gh2/type/grasshopper2.display.testwireframe.md), [ValueTrackerObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.special.valuetrackerobject.md), [WarningsAndErrors](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.warningsanderrors.md), [WriteTextFile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.writetextfile.md)

## Constructors

- [Component](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/ctor.md): (2 overloads) Deserialisation constructor.

## Properties

- [BakeCapable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/bakecapable.md): Gets whether this component is capable of baking any data at this very moment.
- [ChildrenObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/childrenobjects.md): Gets all immediate child objects that belong to the current object. It is possible that an object does not have any children, and it is possible that a child object has children of its own.
- [Connectivity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/connectivity.md): Gets the topological description of this object. Component topology by default only connects the component to its own inputs and outputs. If you wish to get the connectivity for the component as a whole, access the ConnectivityComplete property instead.
- [ConnectivityComplete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/connectivitycomplete.md): Gets the connectivity of this component as a whole (meaning including the input and output parameters).
- [DisplayCapable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaycapable.md)
- [DisplayParameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displayparameters.md): Enumerate over all display capable inputs and outputs. This enumerator skips over disabled and hidden parameters, as well as inputs with sources, and parameters whose attribute bounds are empty.
- [IconMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/iconmode.md): Gets or sets the name vs. icon display mode of this component.
- [Label](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/label.md): Gets (or sets, if you derive from this component) the label. The label ought to be a short, single-line string which is displayed as part of the component slab.
- [Parameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/parameters.md): Gets access to the input and output parameters of this component.
- [Pins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/pins.md): Gets the pin collection for this cushion. Note that the [Component](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component.md) base class implements this only to make it easier for sub-classes to implement [IPinCushion](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.ipincushion.md). If the derived class does not implement [IPinCushion](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.ipincushion.md) then this field will probably be null.
- [SupportsVariableParameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/supportsvariableparameters.md): Gets whether this component supports parameter addition and removal. For this to be true, the methods [Component.CanCreateParameter(Side, int)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/cancreateparameter.md), [Component.CanRemoveParameter(Side, int)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/canremoveparameter.md), and [Component.DoCreateParameter(Side, int, ActionList)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/docreateparameter.md) must all have been overridden.
- [Threading](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/threading.md): Gets or sets the processing level for this component.

## Methods

- [AddInputs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/addinputs.md): Add all standard input parameters by implementing this method. It will be called only once from the base class constructor and will thus execute *before* the constructor of the derived class.
- [AddOutputs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/addoutputs.md): Add all standard output parameters by implementing this method. It will be called only once from the base class constructor and will thus execute *before* the constructor of the derived class.
- [AppendMetaMixingInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/appendmetamixinginput.md)
- [AppendPinToggles](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/appendpintoggles.md): Add toggles to an input panel based on the supported pins of this component.
- [AppendToInputPanel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/appendtoinputpanel.md)
- [BakeShapes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/bakeshapes.md): Bake the shapes in all output parameters. By default this method does not include input parameters or any data on the component itself, but individual components may override that behaviour.
- [BeforeProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/beforeprocess.md): Override this method to perform some action before any data about the component process have been collected or computed. This would be a good place to modify the topology of the input or output parameters for example.
- [CanCreateParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/cancreateparameter.md): Method which determines whether a parameter can be created at the given location.
- [CanRemoveParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/canremoveparameter.md): Method which determines whether the specified parameter can be removed.
- [ComputeInternal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/computeinternal.md): Compute and populate a new solution object. Please do not override this method on your own component class unless you have a really solid understanding of what you're doing. The only reason this method isn't sealed is because Chains and Clusters need to be able to override it.
- [CreateAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/createattributes.md): Create default attributes for this object. If attributes already exist, this method will not replace them.
- [DisplayBounds](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaybounds.md)
- [DisplayFaces](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displayfaces.md)
- [DisplayWires](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaywires.md)
- [DoCreateParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/docreateparameter.md): Method used to construct the parameter at the given location. This method is only called if [Component.CanCreateParameter(Side, int)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/cancreateparameter.md) returns true with the same side and index.
- [DoRemoveParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/doremoveparameter.md): Method used to remove the indicated parameter for realsies. This method is only called if [Component.CanRemoveParameter(Side, int)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/canremoveparameter.md) returns true with the same side and index.
- [ExpireAllRecipients](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/expireallrecipients.md)
- [IGuidAware.ApplyIdMap](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/grasshopper2-doc-iguidaware-applyidmap.md)
- [PostProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/postprocess.md): Override this method to perform some action after all calls to [Component.Process(IDataAccess)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/process.md) during a single solution.
- [PostProcessTree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/postprocesstree.md): Override this method if you wish to post-process the trees generated for the output parameters.
- [PreProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/preprocess.md): Override this method to perform some action prior to any call to [Component.Process(IDataAccess)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/process.md) during a single solution.
- [Process](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/process.md): (2 overloads) Process the logic of this component.
- [ResolveIconMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/resolveiconmode.md): Resolve the current icon mode to one of the definite states.
- [Store](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/store.md): Serialise this component.
- [VariableParameterMaintenance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/variableparametermaintenance.md): This method will be invoked whenever a parameter is added or removed via the variable parameter mechanism.

## Inherited Members

- From [ActiveObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject.md): [DisplayCache](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/displaycache.md), [State](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/state.md), [Compute](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/compute.md), [Expire](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/expire.md), [PopulateDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/populatedisplay.md), [UpdateDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/updatedisplay.md)
- From [DocumentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject.md): [Activity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/activity.md), [Attributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/attributes.md), [CustomValues](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/customvalues.md), [Display](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/display.md), [DisplayName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displayname.md), [DisplayStyle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displaystyle.md), [Document](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/document.md), [EntireFamily](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/entirefamily.md), [FoundingObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/foundingobject.md), [Icon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/icon.md), [IconInternal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/iconinternal.md), [InstanceId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/instanceid.md), [Nomen](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/nomen.md), [Obsolete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/obsolete.md), [ParentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/parentobject.md), [Phase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/phase.md), [ProgressPercentage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/progresspercentage.md), [Relevance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/relevance.md), [Selected](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selected.md), [Selection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selection.md), [SiblingObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/siblingobjects.md), [UserName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/username.md), [ActivityChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/activitychanged.md), [AutosaveRequested](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/autosaverequested.md), [DisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displaychanged.md), [DocumentChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/documentchanged.md), [Expired](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/expired.md), [InstanceIdChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/instanceidchanged.md), [LayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/layoutchanged.md), [NameChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/namechanged.md), [RelevanceChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/relevancechanged.md), [SelectedChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selectedchanged.md), [AddUndoRecord](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/addundorecord.md), [AppendBakeInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendbakeinput.md), [AppendStateInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendstateinput.md), [AppendUserNameInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendusernameinput.md), [ChangeInstanceIds](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/changeinstanceids.md), [ExpireDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/expiredisplay.md), [GetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/getcreationinfo.md), [GetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/getmodificationinfo.md), [InvalidateExistingLayout](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/invalidateexistinglayout.md), [ModifyIcon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/modifyicon.md), [ModifyNameAndInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/modifynameandinfo.md), [OnDisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/ondisplaychanged.md), [OnExpired](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/onexpired.md), [OnLayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/onlayoutchanged.md), [OverrideAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/overrideattributes.md), [RequestAutoSave](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/requestautosave.md), [SetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setcreationinfo.md), [SetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setmodificationinfo.md), [SetProgressPercentage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setprogresspercentage.md)
