# Grasshopper2.Components namespace

Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

## Interfaces

- [IDataAccess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess.md): Interface used for accessing input and output data from within Component.Process methods.
- [IGH_ScriptInstance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.igh-scriptinstance.md): Script running as a component, rather than as a plain script.

## Classes

- [AccessException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.accessexception.md): Type of exception thrown when the access level for data in a parameter doesn't match with the predefined level.
- [Component](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component.md): Abstract class for all components.
- [ComponentIterationInspector](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.componentiterationinspector.md): Use this class to keep a record of the iterations a components sets up during solutions.
- [ComponentParameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.componentparameters.md): Implementation of IComponentParameters.
- [DoNotOptimiseConstructorAttribute](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.donotoptimiseconstructorattribute.md): Assign this attribute to your component class if you do not want to allow optimised proxy construction. When a plugin loads all its components, it short-circuits the constructors to *not* add the input and output parameters, as this takes by far the most time. This however leaves the component instance in an invalid state. That usually doesn't matter because that particular instance is not used for anything, but if your component does require inputs and outputs to *always* be there, you must attach this attribute.
- [GH_ScriptInstance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.gh-scriptinstance.md): Base a script instance derives from. This is the type a scripter writes, and it does nothing on its own; each scripting platform provides its own implementation with the members a script is given.
- [InputAdder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.inputadder.md): Utility class for adding component input parameters.
- [MixingCanvas](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.mixingcanvas.md): A utility class for creating a meta data mixing canvas.
- [MixingRecipe](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.mixingrecipe.md): An immutable collection of input/output metadata mixing relations using Parameter IDs.
- [MixingRecipeExtensions](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.mixingrecipeextensions.md): Extension methods for mixing recipes.
- [ModularComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularcomponent.md): A modular component makes it (relatively) easy to hide and reinstate any of the inputs or outputs. This is accomplished by maintaining a separate array of parameters which must have certain values in their CustomValues dictionary.
- [ModularInputAdder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularinputadder.md): Utility class for adding component input parameters to [ModularComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularcomponent.md) instances.
- [ModularList](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularlist.md): An array of input or output parameters of a [ModularComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularcomponent.md) which maintains the hidden/shown states of the optional parameters.
- [ModularOutputAdder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularoutputadder.md): Utility class for adding component output parameters for [ModularComponent](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularcomponent.md).
- [ModularParameterEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.modularparametereventargs.md)
- [OutputAdder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.outputadder.md): Utility class for adding component output parameters.
- [ParameterEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.parametereventargs.md): Event arguments used in individual Parameter events.
- [ParametersEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.parameterseventargs.md): Event arguments used in mass parameter events.

## Enums

- [MixingBehaviour](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.mixingbehaviour.md): Enumerates the possible meta data inheritance behaviour of component output parameters.
- [NameIconMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.nameiconmode.md): Enumerates the possible name/icon display modes components can be in.
- [Side](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.side.md): Lists the possible sides on which a parameter can exist.
- [ThreadingState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.threadingstate.md): Enumerates the possible processing levels for component solutions.
