# OpcAddTypeNode Members

> Reference: Defines an abstract base class for a single command of the IOpcAddNodesService used to add one type node.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcAddTypeNode</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx">Opc.UaFx</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
<dt>Also in</dt>
<dd>Opc.UaFx.Client</dd>
</dl>

Inherits members from [OpcAddNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaddnode/members), [OpcNodeServiceCommand](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.services.opcnodeservicecommand/members), [OpcServiceCommand](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.services.opcservicecommand/members).

## Constructors

### OpcAddTypeNode

<span class="api-meta">protected</span>

Initializes a new instance of the [OpcAddTypeNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaddtypenode/) class using the `category` and `superTypeId` of the node type to inherit from by the type node to add, which shall be accessible by the `name` and `nodeId` defined. The new node will be a child of the node identified by `superTypeId` using [HasSubtype](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreferencetype/#hassubtype) as the type of reference.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcAddTypeNode(
    OpcNodeCategory category,
    OpcNodeId superTypeId,
    OpcName name,
    OpcNodeId nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(
    category As OpcNodeCategory,
    superTypeId As OpcNodeId,
    name As OpcName,
    nodeId As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `category` | [OpcNodeCategory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecategory/) | The [OpcNodeCategory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecategory/) which classifies the new node to add regarding one of the classifications defined by the [OpcNodeCategory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecategory/) enumeration. |
| `superTypeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the super type node to reference using [HasSubtype](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreferencetype/#hassubtype) as the type of reference. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new variable type node can be accessed. |
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new node can be identified and accessed. In case there [Null](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#null) is specified the server will determine the according [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) by its own. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `superTypeId` is equals [Null](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#null) or `name` is equals [Null](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#null). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `name`, `nodeId` or `superTypeId` is a null reference (Nothing in Visual Basic). |

## Properties

### IsAbstract

<span class="api-meta">abstract</span>

<div class="api-signature" data-lang="csharp">

```csharp
public abstract bool IsAbstract { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public MustOverride Property IsAbstract As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

### SuperTypeId

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeId SuperTypeId { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property SuperTypeId As OpcNodeId
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)
