# IOpcNodeInfo Members

> Reference: Defines an interface which can be used to access basic properties used over any kind of node in an immutable way.

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

## Properties

### Category

Gets the [NodeCategory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#nodecategory) attribute which identifies the kind of node and is therefore used to classify the node regarding its use and purpose.

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

```csharp
OpcNodeCategory Category { get; }
```

</div>

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

```vbnet
ReadOnly Property Category As OpcNodeCategory
```

</div>

**Property value**

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

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

### Description

Gets the value of the optional [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#description) attribute which shall explain the meaning of the node.

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

```csharp
OpcText Description { get; }
```

</div>

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

```vbnet
ReadOnly Property Description As OpcText
```

</div>

**Property value**

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

A localizable instance of the [OpcText](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/) class which optionally explains the meaning of the node or a null reference (Nothing in Visual Basic) if there is no description associated with the node.

**Remarks**

The menaning of the node defines the usage, the context and the purpose of the node.

### DisplayName

Gets the value of the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#displayname) attribute which defines the localizable name of the node.

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

```csharp
OpcText DisplayName { get; }
```

</div>

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

```vbnet
ReadOnly Property DisplayName As OpcText
```

</div>

**Property value**

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

An instance of the [OpcText](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/) class which defines the localizable name of the node.

**Remarks**

Client application should use this attribute if they want to display the name of the node to the user. The [string](https://learn.microsoft.com/dotnet/api/system.string) part of the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#displayname) is restricted to 512 characters.

### Id

Gets the value of the [NodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#nodeid) attribute which unambiguously identifies the node.

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

```csharp
OpcNodeId Id { get; }
```

</div>

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

```vbnet
ReadOnly Property Id As OpcNodeId
```

</div>

**Property value**

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

An instance of the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) class representing the unambiguously identifier of the node.

**Remarks**

Some servers may accept alternative node identifiers in addition to the canonical node identifier represented by this attribute.

A server shall persist the node identifier of a node, that is, it shall not generate new node identifiers when rebooting.

### Name

Gets the value of the [BrowseName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#browsename) attribute which defines the non-localizable human-readable name used when browsing the address space.

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

```csharp
OpcName Name { get; }
```

</div>

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

```vbnet
ReadOnly Property Name As OpcName
```

</div>

**Property value**

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

**Remarks**

The [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) should never be used to display the name of the a node. Use the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#displayname) instead for this purpose.

Unlike node identifiers the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) cannot be used to unambiguously identify the node. Different nodes may have the same browse name. The namespace is provided to make the browse name unique in some cases in the context of a node (e.g. properties of a node) although not unique in the context of the server. If different organizations define browse names for properties, the namespace of the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) provided by the organization makes the [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) unique, although different organizations may use the same string having a slightly different meaning. Servers may often choose to use the same namespace for the node identifier and the browse name. However, if they want to provide a standard property, its browse name shall have the namespace of the standards body although the namespace of the node identifier reflects something else, for example the local server.

It is recommended that standard bodies defining standard type definitions use their namespace for the node identifier of the type definition node as well as for the browse name of the type definition node.

The [string](https://learn.microsoft.com/dotnet/api/system.string)-part of the browse name is case sensitive. That is, clients shall consider them case sensitive. Server are allowed to handle browse names passed in service requests as case insensitive.

Use the value of this property to construct browse paths (see [OpcNamePath](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamepath/)).

### Parent

Gets the parent node of the node.

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

```csharp
IOpcNodeInfo Parent { get; }
```

</div>

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

```vbnet
ReadOnly Property Parent As IOpcNodeInfo
```

</div>

**Property value**

[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 the parent node, or a null reference (Nothing in Visual Basic) if no parent node is known.

### SymbolicName

Gets a symbolic name for the node which is not expected to be globally unique.

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

```csharp
string SymbolicName { get; }
```

</div>

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

```vbnet
ReadOnly Property SymbolicName As String
```

</div>

**Property value**

[String](https://learn.microsoft.com/dotnet/api/system.string)

The symbolic name of the node, or a null reference (Nothing in Visual Basic) if there is no symbolic name assigned.

**Remarks**

The symbolic name is not an attribute of the node. A node browsed by a client (see [OpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcnodeinfo/)) does not provide a symbolic name.

### UserWriteAccess

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

Gets the value of the optional [UserWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#userwriteaccess) attribute which exposes the possibilities of a client to write the attributes of the node taking user access rights into account.

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

```csharp
OpcAttributeWriteAccess UserWriteAccess { get; }
```

</div>

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

```vbnet
ReadOnly Property UserWriteAccess As OpcAttributeWriteAccess
```

</div>

**Property value**

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

A combination of the members defined by the [OpcAttributeWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributewriteaccess/) enumeration.

### WriteAccess

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

Gets the value of the optional [WriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#writeaccess) attribute which exposes the possibilities of a client to write the attributes of the node.

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

```csharp
OpcAttributeWriteAccess WriteAccess { get; }
```

</div>

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

```vbnet
ReadOnly Property WriteAccess As OpcAttributeWriteAccess
```

</div>

**Property value**

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

A combination of the members defined by the [OpcAttributeWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattributewriteaccess/) enumeration.

## Methods

### AttributeValue

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

| Overload | Description |
|---|---|
| [AttributeValue(OpcAttribute)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#attributevalue-opc-uafx-opcattribute)<span class="api-meta">since v2.9</span> | Retrieves the value of the `attribute` specified. |
| [AttributeValue&lt;T&gt;(OpcAttribute)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#attributevalue-t1-opc-uafx-opcattribute)<span class="api-meta">since v2.9</span> | Retrieves the value of the `attribute` specified. |

#### AttributeValue(OpcAttribute)

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

Retrieves the value of the `attribute` specified.

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

```csharp
object AttributeValue(OpcAttribute attribute)
```

</div>

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

```vbnet
Function AttributeValue(attribute As OpcAttribute) As Object
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `attribute` | [OpcAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/) | One of the members defined by the [OpcAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/) enumeration which identifies the attribute its value is queried. |

**Returns**

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

The value of the `attribute` specified or a null reference (Nothing in Visual Basic) in case there the value of the attribute is a null reference or it is not supported by the current [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/).

#### AttributeValue&lt;T&gt;(OpcAttribute)

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

Retrieves the value of the `attribute` specified.

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

```csharp
T AttributeValue<T>(OpcAttribute attribute)
```

</div>

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

```vbnet
Function AttributeValue(Of T)(attribute As OpcAttribute) As T
```

</div>

**Type parameters**

| Name | Description |
|---|---|
| `T` | The expected type of value the attribute shall offer. |

**Parameters**

| Name | Type | Description |
|---|---|---|
| `attribute` | [OpcAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/) | One of the members defined by the [OpcAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/) enumeration which identifies the attribute its value is queried. |

**Returns**

T

The value of the `attribute` as the type `T` specified or the default value of the type `T` in case there the value of the attribute is a null reference (Nothing in Visual Basic) or it is not supported by the current [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/).

### Child

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

| Overload | Description |
|---|---|
| [Child(string)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#child-system-string)<span class="api-meta">since v2.27</span> | Retrieves the immutable child node its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) (its [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value)) or [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#displayname) (its [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/members#value)) matches the specified `name` of the node. |
| [Child(OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#child-opc-uafx-opcname)<span class="api-meta">since v2.9</span> | Retrieves the immutable child node its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) matches exactly the `name` specified. |
| [Child(OpcNamePath)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#child-opc-uafx-opcnamepath)<span class="api-meta">since v2.19</span> | Retrieves the immutable child node following the path-of-names using the nodes its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) matches exactly the parts of the `namePath` specified. |

#### Child(string)

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

Retrieves the immutable child node its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) (its [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/members#value)) or [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#displayname) (its [Value](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/members#value)) matches the specified `name` of the node.

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

```csharp
IOpcNodeInfo Child(string name)
```

</div>

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

```vbnet
Function Child(name As String) As IOpcNodeInfo
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The nominal information of the child node to retrieve. |

**Returns**

[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 that is known using the specified `name`; otherwise a null reference (Nothing in Visual Basic) in case there the server does not provide such a child node for the node.

**Exceptions**

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

#### Child(OpcName)

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

Retrieves the immutable child node its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) matches exactly the `name` specified.

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

```csharp
IOpcNodeInfo Child(OpcName name)
```

</div>

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

```vbnet
Function Child(name As OpcName) As IOpcNodeInfo
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The full qualified [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) of the node to lookup. |

**Returns**

[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 its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) exactly matches the `name` specified, if such a node is a known child of this node. Otherwise a null reference (Nothing in Visual Basic).

**Exceptions**

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

#### Child(OpcNamePath)

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

Retrieves the immutable child node following the path-of-names using the nodes its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/members#name) matches exactly the parts of the `namePath` specified.

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

```csharp
IOpcNodeInfo Child(OpcNamePath namePath)
```

</div>

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

```vbnet
Function Child(namePath As OpcNamePath) As IOpcNodeInfo
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `namePath` | [OpcNamePath](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamepath/) | The [OpcNamePath](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnamepath/) of full qualified [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/)s of the nodes to follow. |

**Returns**

[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 that has been lookup following the `namePath` specified, if such a node is a known child of this node (and its children). Otherwise a null reference (Nothing in Basic).

**Exceptions**

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

### Children

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

Retrieves a sequence of immutable nodes organized as children of this node.

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

```csharp
IEnumerable<IOpcNodeInfo> Children()
```

</div>

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

```vbnet
Function Children() As IEnumerable(Of IOpcNodeInfo)
```

</div>

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/)&gt;

A sequence of instances implementing the [IOpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnodeinfo/) interface which representing the nodes organized as child nodes of this node.

### References

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

Retrieves a sequence of immutable references between this node and other nodes.

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

```csharp
IEnumerable<OpcReference> References()
```

</div>

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

```vbnet
Function References() As IEnumerable(Of OpcReference)
```

</div>

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcReference](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreference/)&gt;

A sequence of [OpcReference](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreference/) instances providing hierarchical and non-hierarchical references from this node to other nodes.
