# OpcVariableNode Members

> Reference: Defines a node to use to represent values which may be simple or complex.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcVariableNode</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>
</dl>

Inherits members from [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members), [OpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members).

## Constructors

### OpcVariableNode

<span class="api-meta">protected · 16 overloads</span>

| Overload | Description |
|---|---|
| [OpcVariableNode(OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcname)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified. |
| [OpcVariableNode(OpcNodeModel, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-opcname)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified. |
| [OpcVariableNode(OpcName, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcname-system-object)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value given by `value`. |
| [OpcVariableNode(OpcNodeModel, OpcName, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-opcname-system-object)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value given by `value`. |
| [OpcVariableNode(OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified. |
| [OpcVariableNode(OpcNodeModel, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified. |
| [OpcVariableNode(OpcName, OpcNodeId, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcname-opc-uafx-opcnodeid-system-object)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value given by `value`. |
| [OpcVariableNode(OpcNodeModel, OpcName, OpcNodeId, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-opcname-opc-uafx-opcnodeid-system-object)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value given by `value`. |
| [OpcVariableNode(IOpcNode, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-iopcnode-opc-uafx-opcname)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified as a child node of the `parent` node given. |
| [OpcVariableNode(OpcNodeModel, IOpcNode, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified as a child node of the `parent` node given. |
| [OpcVariableNode(IOpcNode, OpcName, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-iopcnode-opc-uafx-opcname-system-object)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value defined by `value` as a child node of the `parent` node given. |
| [OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname-system-object)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value defined by `value` as a child node of the `parent` node given. |
| [OpcVariableNode(IOpcNode, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given. |
| [OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given. |
| [OpcVariableNode(IOpcNode, OpcName, OpcNodeId, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid-system-object)<span class="api-meta">protected</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value defined by `value` as a child node of the `parent` node given. |
| [OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#opcvariablenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid-system-object)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value defined by `value` as a child node of the `parent` node given. |

#### OpcVariableNode(OpcName)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified.

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

```csharp
protected OpcVariableNode(OpcName name)
```

</div>

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

```vbnet
Protected Sub New(name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `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 node can be accessed. |

#### OpcVariableNode(OpcNodeModel, OpcName)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified.

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

```csharp
protected OpcVariableNode(OpcNodeModel model, OpcName name)
```

</div>

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

```vbnet
Protected Sub New(model As OpcNodeModel, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `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 node can be accessed. |

#### OpcVariableNode(OpcName, object)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value given by `value`.

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

```csharp
protected OpcVariableNode(OpcName name, object value)
```

</div>

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

```vbnet
Protected Sub New(name As OpcName, value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `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 node can be accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(OpcNodeModel, OpcName, object)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value given by `value`.

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

```csharp
protected OpcVariableNode(OpcNodeModel model, OpcName name, object value)
```

</div>

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

```vbnet
Protected Sub New(model As OpcNodeModel, name As OpcName, value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `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 node can be accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(OpcName, OpcNodeId)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified.

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

```csharp
protected OpcVariableNode(OpcName name, OpcNodeId id)
```

</div>

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

```vbnet
Protected Sub New(name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |

#### OpcVariableNode(OpcNodeModel, OpcName, OpcNodeId)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified.

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

```csharp
protected OpcVariableNode(OpcNodeModel model, OpcName name, OpcNodeId id)
```

</div>

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

```vbnet
Protected Sub New(model As OpcNodeModel, name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |

#### OpcVariableNode(OpcName, OpcNodeId, object)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value given by `value`.

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

```csharp
protected OpcVariableNode(OpcName name, OpcNodeId id, object value)
```

</div>

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

```vbnet
Protected Sub New(name As OpcName, id As OpcNodeId, value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(OpcNodeModel, OpcName, OpcNodeId, object)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value given by `value`.

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

```csharp
protected OpcVariableNode(
    OpcNodeModel model,
    OpcName name,
    OpcNodeId id,
    object value)
```

</div>

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

```vbnet
Protected Sub New(
    model As OpcNodeModel,
    name As OpcName,
    id As OpcNodeId,
    value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(IOpcNode, OpcName)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(IOpcNode parent, OpcName name)
```

</div>

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

```vbnet
Protected Sub New(parent As IOpcNode, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |

#### OpcVariableNode(OpcNodeModel, IOpcNode, OpcName)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(OpcNodeModel model, IOpcNode parent, OpcName name)
```

</div>

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

```vbnet
Protected Sub New(model As OpcNodeModel, parent As IOpcNode, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |

#### OpcVariableNode(IOpcNode, OpcName, object)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value defined by `value` as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(IOpcNode parent, OpcName name, object value)
```

</div>

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

```vbnet
Protected Sub New(parent As IOpcNode, name As OpcName, value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, object)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` specified with the initial value defined by `value` as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(
    OpcNodeModel model,
    IOpcNode parent,
    OpcName name,
    object value)
```

</div>

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

```vbnet
Protected Sub New(
    model As OpcNodeModel,
    parent As IOpcNode,
    name As OpcName,
    value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(IOpcNode, OpcName, OpcNodeId)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(IOpcNode parent, OpcName name, OpcNodeId id)
```

</div>

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

```vbnet
Protected Sub New(parent As IOpcNode, name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |

#### OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(
    OpcNodeModel model,
    IOpcNode parent,
    OpcName name,
    OpcNodeId id)
```

</div>

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

```vbnet
Protected Sub New(
    model As OpcNodeModel,
    parent As IOpcNode,
    name As OpcName,
    id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |

#### OpcVariableNode(IOpcNode, OpcName, OpcNodeId, object)

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

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value defined by `value` as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(
    IOpcNode parent,
    OpcName name,
    OpcNodeId id,
    object value)
```

</div>

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

```vbnet
Protected Sub New(
    parent As IOpcNode,
    name As OpcName,
    id As OpcNodeId,
    value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

#### OpcVariableNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId, object)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) class accessible by the `name` and `id` specified with the initial value defined by `value` as a child node of the `parent` node given.

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

```csharp
protected OpcVariableNode(
    OpcNodeModel model,
    IOpcNode parent,
    OpcName name,
    OpcNodeId id,
    object value)
```

</div>

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

```vbnet
Protected Sub New(
    model As OpcNodeModel,
    parent As IOpcNode,
    name As OpcName,
    id As OpcNodeId,
    value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `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 node can be accessed. |
| `id` | [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 variable node can be identified and accessed. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The initial value of the new variable node. |

## Properties

### AccessLevel

Gets or sets a value which indicates in which ways the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) attribute of the variable node can be accessed (read/write) and if it provides current and/or historic data.

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

```csharp
public OpcAccessLevel AccessLevel { get; set; }
```

</div>

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

```vbnet
Public Property AccessLevel As OpcAccessLevel
```

</div>

**Property value**

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

One of the members defined by the [OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/) enumeration. Which is used to indicate the ways the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) attribute of the current [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) can be accessed (read/write) and if it provides current and/or historic data. The [AccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#accesslevel) does not take any user access rights into account, although the variable is writable this may be restricted to a certain user / user group.

**Implements**

[AccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#accesslevel)

### ArrayDimensions

<span class="api-meta">since v2.9</span>

Gets the number/lengths of dimensions for an array [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) with one or more fixed dimensions.

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

```csharp
public OpcArrayDimensions ArrayDimensions { get; set; }
```

</div>

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

```vbnet
Public Property ArrayDimensions As OpcArrayDimensions
```

</div>

**Property value**

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

An instance of the [OpcArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcarraydimensions/) class which offers the number/lengths of dimensions for an array [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value).

**Implements**

[ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#arraydimensions)

**Remarks**

If the [ValueRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#valuerank) does not identify an array of a specific dimension (i.e. [ValueRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#valuerank) &lt;= 0) [ArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#arraydimensions) can be a null reference (Nothing in Visual Basic).

A node created with an array as its initial value takes the lengths of that array as its array dimensions, which states them to clients as the maximum lengths (OPC 10000-3). The server does not enforce them, and they are not adjusted when the value changes. If the length of the array varies, state a length of 0 for each dimension, which means that the length is not known, for example `new OpcArrayDimensions(0)`.

### DataType

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

Gets or sets a value which defines a pre-defined used [DataTypeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#datatypeid) as one of the members defined by the [OpcDataType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcdatatype/) enumeration to simplify querying standard data types.

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

```csharp
public virtual OpcDataType DataType { get; set; }
```

</div>

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

```vbnet
Public Overridable Property DataType As OpcDataType
```

</div>

**Property value**

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

One of the members defined by the [OpcDataType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcdatatype/) enumeration.

### DataTypeId

Gets or stets the identifier which identifies the node that defines the type of data represented by the variable node.

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

```csharp
public OpcNodeId DataTypeId { get; set; }
```

</div>

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

```vbnet
Public Property DataTypeId As OpcNodeId
```

</div>

**Property value**

[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 data type node which defines the type of data represented by the variable node. These data type node defines either a simple or a complex type of data accessible by the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) property.

**Implements**

[DataTypeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#datatypeid)

### DefaultReferenceTypeId

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

Gets the default identifier which identifies the type that defines the underlying node reference within this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) is referenced by its parent node.

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

```csharp
protected override OpcNodeId DefaultReferenceTypeId { get; }
```

</div>

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

```vbnet
Protected Overrides ReadOnly Property DefaultReferenceTypeId As OpcNodeId
```

</div>

**Property value**

[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 reference wihin this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) is referenced. These reference defines the typical behaviour of an instance node and its role in the address space regarding its parent. If there exists no specific reference type a null reference (Nothing in Visual Basic).

**Overrides**

[DefaultReferenceTypeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members#defaultreferencetypeid)

### DefaultTypeDefinitionId

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

Gets the default identifier which identifies the node that defines the underlying node type from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created.

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

```csharp
protected override OpcNodeId DefaultTypeDefinitionId { get; }
```

</div>

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

```vbnet
Protected Overrides ReadOnly Property DefaultTypeDefinitionId As OpcNodeId
```

</div>

**Property value**

[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 type node from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created from. These type node defines the typical structure of an instance node of its type definition. If there exists no specific type definition node a null reference (Nothing in Visual Basic).

**Overrides**

[DefaultTypeDefinitionId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members#defaulttypedefinitionid)

### HistoryConfiguration

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

```csharp
public OpcHistoryConfigurationNode HistoryConfiguration { get; }
```

</div>

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

```vbnet
Public ReadOnly Property HistoryConfiguration As OpcHistoryConfigurationNode
```

</div>

**Property value**

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

### IsArray

<span class="api-meta">since v2.18</span>

Gets a value indicating whether the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) represented is an array.

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

```csharp
public bool IsArray { get; }
```

</div>

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

```vbnet
Public ReadOnly Property IsArray As Boolean
```

</div>

**Property value**

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

The value true if the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) of the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) represented is an array; otherwise the false.

### IsHistorizing

Gets or sets a value indiciating whether there exists an value history for the node.

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

```csharp
public bool IsHistorizing { get; set; }
```

</div>

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

```vbnet
Public Property IsHistorizing As Boolean
```

</div>

**Property value**

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

The value true if a value history exists; otherwise the value false. The default value is false.

### ReadAccessLevelCallback

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

```csharp
public OpcReadAttributeValueCallback<OpcAccessLevel> ReadAccessLevelCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadAccessLevelCallback As OpcReadAttributeValueCallback(Of OpcAccessLevel)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/)&gt;

### ReadArrayDimensionsCallback

<span class="api-meta">since v2.9</span>

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

```csharp
public OpcReadAttributeValueCallback<OpcArrayDimensions> ReadArrayDimensionsCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadArrayDimensionsCallback As OpcReadAttributeValueCallback(Of OpcArrayDimensions)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[OpcArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcarraydimensions/)&gt;

### ReadDataTypeCallback

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

```csharp
public OpcReadAttributeValueCallback<OpcNodeId> ReadDataTypeCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadDataTypeCallback As OpcReadAttributeValueCallback(Of OpcNodeId)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)&gt;

### ReadIsHistorizingCallback

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

```csharp
public OpcReadAttributeValueCallback<bool> ReadIsHistorizingCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadIsHistorizingCallback As OpcReadAttributeValueCallback(Of Boolean)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)&gt;

### ReadUserAccessLevelCallback

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

```csharp
public OpcReadAttributeValueCallback<OpcAccessLevel> ReadUserAccessLevelCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadUserAccessLevelCallback As OpcReadAttributeValueCallback(Of OpcAccessLevel)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/)&gt;

### ReadValueRankCallback

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

```csharp
public OpcReadAttributeValueCallback<int> ReadValueRankCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadValueRankCallback As OpcReadAttributeValueCallback(Of Integer)
```

</div>

**Property value**

[OpcReadAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecallback-1/)&lt;[Int32](https://learn.microsoft.com/dotnet/api/system.int32)&gt;

### ReadVariableValueCallback

Gets or sets a callback used to read the variable value.

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

```csharp
public OpcReadVariableValueCallback ReadVariableValueCallback { get; set; }
```

</div>

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

```vbnet
Public Property ReadVariableValueCallback As OpcReadVariableValueCallback
```

</div>

**Property value**

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

A [OpcReadVariableValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecallback/) used to read the variable value as an [object](https://learn.microsoft.com/dotnet/api/system.object). The value can also be a null reference (Nothing in Visual Basic).

### Status

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

```csharp
public OpcStatus Status { get; }
```

</div>

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

```vbnet
Public ReadOnly Property Status As OpcStatus
```

</div>

**Property value**

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

### Timestamp

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

```csharp
public DateTime? Timestamp { get; set; }
```

</div>

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

```vbnet
Public Property Timestamp As Date?
```

</div>

**Property value**

[Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt;

### UserAccessLevel

Gets or sets a value which indicates in which ways the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) attribute of the variable node can be accessed (read/write) and if it provides current and/or historic data taking user access rights into account.

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

```csharp
public OpcAccessLevel UserAccessLevel { get; set; }
```

</div>

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

```vbnet
Public Property UserAccessLevel As OpcAccessLevel
```

</div>

**Property value**

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

One of the members defined by the [OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/) enumeration. Which is used to indicate the ways the [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#value) attribute of the current [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) can be accessed (read/write) and if it provides current and/or historic data. The [UserAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#useraccesslevel) takes user access rights into account therefore its access may be restricted to a certain user / user group.

**Implements**

[UserAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#useraccesslevel)

### Value

Gets or sets the value of the variable node which may be simple or complex.

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

```csharp
public object Value { get; set; }
```

</div>

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

```vbnet
Public Property Value As Object
```

</div>

**Property value**

[Object](https://learn.microsoft.com/dotnet/api/system.object)

A [object](https://learn.microsoft.com/dotnet/api/system.object) representing the value of the variable node. This can be also a null reference (Nothing in Visual Basic).

**Implements**

[Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#value)

**Remarks**

Setting the value is not synchronized with a client writing the value at the same time. Clients learn about the new value once the changes are applied, see [ApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#applychanges-opc-uafx-opccontext-system-boolean).

### ValueRank

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

```csharp
public int ValueRank { get; set; }
```

</div>

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

```vbnet
Public Property ValueRank As Integer
```

</div>

**Property value**

[Int32](https://learn.microsoft.com/dotnet/api/system.int32)

**Implements**

[ValueRank](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcvariablenodeinfo/members#valuerank)

### WriteAccessLevelCallback

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

```csharp
public OpcWriteAttributeValueCallback<OpcAccessLevel> WriteAccessLevelCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteAccessLevelCallback As OpcWriteAttributeValueCallback(Of OpcAccessLevel)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/)&gt;

### WriteArrayDimensionsCallback

<span class="api-meta">since v2.9</span>

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

```csharp
public OpcWriteAttributeValueCallback<OpcArrayDimensions> WriteArrayDimensionsCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteArrayDimensionsCallback As OpcWriteAttributeValueCallback(Of OpcArrayDimensions)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[OpcArrayDimensions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcarraydimensions/)&gt;

### WriteDataTypeCallback

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

```csharp
public OpcWriteAttributeValueCallback<OpcNodeId> WriteDataTypeCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteDataTypeCallback As OpcWriteAttributeValueCallback(Of OpcNodeId)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)&gt;

### WriteIsHistorizingCallback

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

```csharp
public OpcWriteAttributeValueCallback<bool> WriteIsHistorizingCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteIsHistorizingCallback As OpcWriteAttributeValueCallback(Of Boolean)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)&gt;

### WriteUserAccessLevelCallback

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

```csharp
public OpcWriteAttributeValueCallback<OpcAccessLevel> WriteUserAccessLevelCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteUserAccessLevelCallback As OpcWriteAttributeValueCallback(Of OpcAccessLevel)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[OpcAccessLevel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcaccesslevel/)&gt;

### WriteValueRankCallback

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

```csharp
public OpcWriteAttributeValueCallback<int> WriteValueRankCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteValueRankCallback As OpcWriteAttributeValueCallback(Of Integer)
```

</div>

**Property value**

[OpcWriteAttributeValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecallback-1/)&lt;[Int32](https://learn.microsoft.com/dotnet/api/system.int32)&gt;

### WriteVariableValueCallback

Gets or sets a callback used to write the variable value.

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

```csharp
public OpcWriteVariableValueCallback WriteVariableValueCallback { get; set; }
```

</div>

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

```vbnet
Public Property WriteVariableValueCallback As OpcWriteVariableValueCallback
```

</div>

**Property value**

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

A [OpcWriteVariableValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecallback/) used to write the variable value as an [object](https://learn.microsoft.com/dotnet/api/system.object). The value can also be a null reference (Nothing in Visual Basic).

## Methods

### InitializeDefaults

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

Initializes the default values used by the [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/).

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

```csharp
protected override void InitializeDefaults()
```

</div>

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

```vbnet
Protected Overrides Sub InitializeDefaults()
```

</div>

**Overrides**

[InitializeDefaults](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members#initializedefaults)

**Remarks**

This method is used to ensure the availability of appropriate node specific default values. For more information like when this method is to be overwritten see [InitializeDefaults](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#initializedefaults).

### ReadAttributeValueCore

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

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

```csharp
protected override OpcAttributeValue<T> ReadAttributeValueCore<T>(
    OpcReadAttributeValueContext context,
    OpcAttributeValue<T> value)
```

</div>

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

```vbnet
Protected Overrides Function ReadAttributeValueCore(Of T)(
    context As OpcReadAttributeValueContext,
    value As OpcAttributeValue(Of T)) As OpcAttributeValue(Of T)
```

</div>

**Type parameters**

| Name | Description |
|---|---|
| `T` |  |

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcReadAttributeValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadattributevaluecontext/) |  |
| `value` | [OpcAttributeValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributevalue-1/)&lt;T&gt; |  |

**Returns**

[OpcAttributeValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributevalue-1/)&lt;T&gt;

**Overrides**

[ReadAttributeValueCore&lt;T&gt;(OpcReadAttributeValueContext, OpcAttributeValue&lt;T&gt;)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readattributevaluecore)

### ReadValue

Reads the variable node value using the `context` specified.

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

```csharp
public object ReadValue(OpcReadVariableValueContext context)
```

</div>

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

```vbnet
Public Function ReadValue(context As OpcReadVariableValueContext) As Object
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcReadVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext/) | The [OpcReadVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext/) to use to read the variable node value. |

**Returns**

[Object](https://learn.microsoft.com/dotnet/api/system.object)

The [object](https://learn.microsoft.com/dotnet/api/system.object) variable node value associated with this node and read using the `context` specified. This can also be a null reference (Nothing in Visual Basic).

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` is a null reference (Nothing in Visual Basic). |

### ReadVariableValue

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

```csharp
public OpcVariableValue<object> ReadVariableValue(
    OpcReadVariableValueContext context)
```

</div>

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

```vbnet
Public Function ReadVariableValue(
    context As OpcReadVariableValueContext) As OpcVariableValue(Of Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcReadVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext/) |  |

**Returns**

[OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt;

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) |  |

### ReadVariableValueCore

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

Reads the value of the variable node using the `context` and `value` information specified.

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

```csharp
protected virtual OpcVariableValue<object> ReadVariableValueCore(
    OpcReadVariableValueContext context,
    OpcVariableValue<object> value)
```

</div>

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

```vbnet
Protected Overridable Function ReadVariableValueCore(
    context As OpcReadVariableValueContext,
    value As OpcVariableValue(Of Object)) As OpcVariableValue(Of Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcReadVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext/) | The [OpcReadVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadvariablevaluecontext/) to use to read the variable node value. |
| `value` | [OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt; | The [OpcVariableValue&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/) containing the currently used value constructed by the value information contained in the variable node cache. |

**Returns**

[OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt;

The [OpcVariableValue&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/) read using the [ReadVariableValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#readvariablevaluecallback) or the `value` if there is no custom callback routine defined.

### WriteAttributeValueCore

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

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

```csharp
protected override OpcAttributeValue<T> WriteAttributeValueCore<T>(
    OpcWriteAttributeValueContext context,
    OpcAttributeValue<T> value)
```

</div>

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

```vbnet
Protected Overrides Function WriteAttributeValueCore(Of T)(
    context As OpcWriteAttributeValueContext,
    value As OpcAttributeValue(Of T)) As OpcAttributeValue(Of T)
```

</div>

**Type parameters**

| Name | Description |
|---|---|
| `T` |  |

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcWriteAttributeValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwriteattributevaluecontext/) |  |
| `value` | [OpcAttributeValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributevalue-1/)&lt;T&gt; |  |

**Returns**

[OpcAttributeValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributevalue-1/)&lt;T&gt;

**Overrides**

[WriteAttributeValueCore&lt;T&gt;(OpcWriteAttributeValueContext, OpcAttributeValue&lt;T&gt;)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writeattributevaluecore)

### WriteValue

Writes the `value` to the variable node value using the `context` specified.

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

```csharp
public void WriteValue(OpcWriteVariableValueContext context, object value)
```

</div>

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

```vbnet
Public Sub WriteValue(context As OpcWriteVariableValueContext, value As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcWriteVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext/) | The [OpcWriteVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext/) to use to write the variable node `value` specified. |
| `value` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The [object](https://learn.microsoft.com/dotnet/api/system.object) to write to the variable node value. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` is a null reference (Nothing in Visual Basic). |

### WriteVariableValue

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

```csharp
public void WriteVariableValue(
    OpcWriteVariableValueContext context,
    OpcVariableValue<object> value)
```

</div>

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

```vbnet
Public Sub WriteVariableValue(
    context As OpcWriteVariableValueContext,
    value As OpcVariableValue(Of Object))
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcWriteVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext/) |  |
| `value` | [OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt; |  |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) |  |

### WriteVariableValueCore

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

Writes the value of the variable node using the `context` and `value` information specified.

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

```csharp
protected virtual OpcVariableValue<object> WriteVariableValueCore(
    OpcWriteVariableValueContext context,
    OpcVariableValue<object> value)
```

</div>

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

```vbnet
Protected Overridable Function WriteVariableValueCore(
    context As OpcWriteVariableValueContext,
    value As OpcVariableValue(Of Object)) As OpcVariableValue(Of Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcWriteVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext/) | The [OpcWriteVariableValueContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcwritevariablevaluecontext/) to use to write the variable node value. |
| `value` | [OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt; | The [OpcVariableValue&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/) containing the currently used value constructed by the value information contained in the variable node cache. |

**Returns**

[OpcVariableValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/)&lt;[Object](https://learn.microsoft.com/dotnet/api/system.object)&gt;

The [OpcVariableValue&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablevalue-1/) written using the [WriteVariableValueCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/members#writevariablevaluecallback) or the `value` if there is no custom callback routine defined.
