# OpcNominalNodeIdFactory Members

> Reference: Provides a generic factory for OpcNodeId instances which generates general unique node identifiers using Create / Create or node dependent unique node identifiers using Create.

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

## Constructors

### OpcNominalNodeIdFactory

Initializes a new instance of the [OpcNominalNodeIdFactory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/) class.

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

```csharp
public OpcNominalNodeIdFactory()
```

</div>

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

```vbnet
Public Sub New()
```

</div>

## Properties

### Separator

Gets or sets the separator used to separate parent-child related node identifiers from each other.

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

```csharp
public char Separator { get; set; }
```

</div>

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

```vbnet
Public Property Separator As Char
```

</div>

**Property value**

[Char](https://learn.microsoft.com/dotnet/api/system.char)

The character used to separate node identifiers from each other. The default value of this property is [DefaultSeparator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#defaultseparator).

## Methods

### Create

<span class="api-meta">4 overloads</span>

| Overload | Description |
|---|---|
| [Create(OpcContext)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#create-opc-uafx-opccontext)<span class="api-meta">override</span> | Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) just using the `context` specified. |
| [Create(OpcContext, OpcNamespace)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#create-opc-uafx-opccontext-opc-uafx-opcnamespace)<span class="api-meta">override</span> | Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context` and `nodeNamespace` specified. |
| [Create(OpcContext, OpcNamespace, IOpcNodeInfo)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#create-opc-uafx-opccontext-opc-uafx-opcnamespace-opc-uafx-iopcnodeinfo)<span class="api-meta">override</span> | Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context` and the `node` for that the node identifier is used. |
| [Create(OpcContext, OpcNamespace, IOpcNodeInfo, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#create-opc-uafx-opccontext-opc-uafx-opcnamespace-opc-uafx-iopcnodeinfo-opc-uafx-opcname)<span class="api-meta">protected · virtual · since v2.16</span> | Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context`, `node` and `nodeName` specified. |

#### Create(OpcContext)

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

Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) just using the `context` specified.

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

```csharp
public override OpcNodeId Create(OpcContext context)
```

</div>

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

```vbnet
Public Overrides Function Create(context As OpcContext) As OpcNodeId
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to generate the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/). |

**Returns**

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

A new instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) class which defines an unique [Guid](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidtype/#guid) node identifier within the [Default](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#default) namespace.

**Overrides**

[Create](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidfactory/members#create-opc-uafx-opccontext)

#### Create(OpcContext, OpcNamespace)

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

Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context` and `nodeNamespace` specified.

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

```csharp
public override OpcNodeId Create(OpcContext context, OpcNamespace nodeNamespace)
```

</div>

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

```vbnet
Public Overrides Function Create(
    context As OpcContext,
    nodeNamespace As OpcNamespace) As OpcNodeId
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to generate the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/). |
| `nodeNamespace` | [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) | The [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) to that the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) have to refer to. If a null reference (Nothing in Visual Basic) is specified [Default](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#default) is used. |

**Returns**

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

A new instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) class which defines an unique [Guid](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidtype/#guid) node identifier within the `nodeNamespace` specified.

**Overrides**

[Create](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidfactory/members#create-opc-uafx-opccontext-opc-uafx-opcnamespace)

#### Create(OpcContext, OpcNamespace, IOpcNodeInfo)

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

Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context` and the `node` for that the node identifier is used.

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

```csharp
public override OpcNodeId Create(
    OpcContext context,
    OpcNamespace nodeNamespace,
    IOpcNodeInfo node)
```

</div>

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

```vbnet
Public Overrides Function Create(
    context As OpcContext,
    nodeNamespace As OpcNamespace,
    node As IOpcNodeInfo) As OpcNodeId
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to generate the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/). |
| `nodeNamespace` | [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) | The [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) to that the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) have to refer to. If a null reference (Nothing in Visual Basic) is specified [Default](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#default) is used. |
| `node` | [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/) | An instance implementing the [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/) interface which represents a preview of the node for which the new node identifier is used. |

**Returns**

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

A new instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) class either using only the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) or additionally the [Parent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#parent) of the `node` specified. In the last case the parent-child related node identifier is constructed using the [Id](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#id) of the parent thereby the child and parent parts are separated by the [Separator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#separator). In case there `node` defines is a null reference (Nothing in Visual Basic) a null reference (Nothing in Visual Basic) is returned. In case there [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) of `node` is a null reference (Nothing in Visual Basic) or it is a null-name (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#isnull)) the original node identifier is returned.

**Overrides**

[Create](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidfactory/members#create-opc-uafx-opccontext-opc-uafx-opcnamespace-opc-uafx-iopcnodeinfo)

**Remarks**

Only in case there the `nodeNamespace` differs from the namespace used by the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) of the `node` specified and if it is not a default namespace (see [IsDefault](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#isdefault)), then the `nodeNamespace` specified is used; otherwise the namespace used by the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name).

#### Create(OpcContext, OpcNamespace, IOpcNodeInfo, OpcName)

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

Creates a new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) using the `context`, `node` and `nodeName` specified.

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

```csharp
protected virtual OpcNodeId Create(
    OpcContext context,
    OpcNamespace nodeNamespace,
    IOpcNodeInfo node,
    OpcName nodeName)
```

</div>

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

```vbnet
Protected Overridable Function Create(
    context As OpcContext,
    nodeNamespace As OpcNamespace,
    node As IOpcNodeInfo,
    nodeName As OpcName) As OpcNodeId
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to generate the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/). |
| `nodeNamespace` | [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) | The [OpcNamespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/) to that the new [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) have to refer to. If a null reference (Nothing in Visual Basic) is specified [Default](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#default) is used. |
| `node` | [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/) | An instance implementing the [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/) interface which represents a preview of the node for which the new node identifier is used. |
| `nodeName` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The alternative [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) to use instead of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) of the supplied `node` or a null reference (Nothing in Visual Basic) to use the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name). |

**Returns**

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

A new instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) class either using only the `nodeName` or [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) or additionally the [Parent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#parent) of the `node` specified. In the last case the parent-child related node identifier is constructed using the [Id](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#id) of the parent thereby the child and parent parts are separated by the [Separator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnominalnodeidfactory/members#separator). In case there `node` defined is a null reference (Nothing in Visual Basic) a null reference (Nothing in Visual Basic) is returned. In case there `nodeName` or [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) of `node` is a null reference (Nothing in Visual Basic) or it is a null-name (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#isnull)) the original node identifier is returned.

**Remarks**

Only in case there the `nodeNamespace` differs from the namespace used by the `nodeName` or [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) of the `node` specified and if it is not a default namespace (see [IsDefault](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamespace/members#isdefault)), then the `nodeNamespace` specified is used; otherwise the namespace used by the `nodeName` or [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name).
