# OpcTypeNodeInfo Members

> Reference: Provides properties and methods for the examination of the attributes and references of a node which is classified as DataType, ObjectType or VariableType.

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

Inherits members from [OpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcnodeinfo/members).

## Properties

### BaseType

Gets the [OpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcnodeinfo/) about the immediate super type node of the type node represented.

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

```csharp
public OpcTypeNodeInfo BaseType { get; }
```

</div>

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

```vbnet
Public ReadOnly Property BaseType As OpcTypeNodeInfo
```

</div>

**Property value**

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

An instance of the [OpcNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcnodeinfo/) of the immediate super type node of the type node represented, if present; otherwise a null reference (Nothing in Visual Basic) in case there is no super type node available.

**Remarks**

The time consumed by the first call of the property depends on the availability of the server, because of the base type node is requested on-demand and is cached for subsequent calls. This means, that further base type requests will take use of already retrieved base type information and will not demand additional network resources.

### BaseTypeId

Gets the [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) about the immediate super type node of the type node represented.

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

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

</div>

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

```vbnet
Public ReadOnly Property BaseTypeId 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/) of the immediate super type node of the type node represented, if present; otherwise a null reference (Nothing in Visual Basic) in this case there is no super type node available.

**Remarks**

The time consumed by the first call of the property depends on the availability of the server, because of the base type node identifier is requested on-demand and is cached for subsequent calls. This means, that further base type identifier requests will take use of already retrieved base type identifier information and will not demand additional network resources.

### IsAbstract

Gets a value indicating whether the type represented can be instantiated directly.

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

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

</div>

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

```vbnet
Public ReadOnly Property IsAbstract As Boolean
```

</div>

**Property value**

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

The value true if the type represented can be instantiated directly; otherwise the value false.

**Remarks**

The time consumed by the first call of the property depends on the availability of the server, because of the [IsAbstract](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#isabstract) attribute is requested on-demand and is cached for subsequent calls. This means, that further [IsAbstract](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#isabstract) attribute requests will take use of already retrieved attribute information and will not demand additional network resources.

### IsEnum

Gets a value indicating whether the type represented is an enumeration.

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

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

</div>

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

```vbnet
Public ReadOnly Property IsEnum As Boolean
```

</div>

**Property value**

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

The value true if the type is an enumeration; otherwise the value false.

### IsSystemType

Gets a value indicating whether the type represented is one of the predefined built-in data types defined by the OPC UA.

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

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

</div>

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

```vbnet
Public ReadOnly Property IsSystemType As Boolean
```

</div>

**Property value**

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

The value true if the type node represented is a built-in type; otherwise the value false.

### UnderlyingType

Gets the underlying built-in data type definition of the node type represented.

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

```csharp
public OpcDataType UnderlyingType { get; }
```

</div>

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

```vbnet
Public ReadOnly Property UnderlyingType 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 which defines the underlying data type of type node represented.

## Methods

### GetEnumMembers

Retrieves all the enumeration members defined by the data type node.

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

```csharp
public OpcEnumMember[] GetEnumMembers()
```

</div>

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

```vbnet
Public Function GetEnumMembers() As OpcEnumMember()
```

</div>

**Returns**

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

An array of [OpcEnumMember](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcenummember/) instances which define the enumeration member information provided by a "EnumStrings" or "EnumValues" property node of the data type node. If the data type is not an enumerated type ([IsEnum](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/members#isenum) is equals false) a null reference (Nothing in Visual Basic).

### GetSubTypeIds

Retrieves for each sub type node of the type node represented the canonical identifiers.

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

```csharp
public OpcNodeId[] GetSubTypeIds()
```

</div>

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

```vbnet
Public Function GetSubTypeIds() As OpcNodeId()
```

</div>

**Returns**

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

An array of [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) instances containing the canonical identifier of each sub type node referencing the type node represented as its super type node.

**Remarks**

The time consumed by the first call of the method depends on the availability of the server, because of the node identifiers are requested on-demand and are cached for subsequent calls. This means, that further sub type identifier requests will take use of already retrieved sub type information and will not demand additional network resources.

### GetSubTypes

Retrieves for each sub type node of the type node represented an instance of the [OpcTypeNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/) class.

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

```csharp
public OpcTypeNodeInfo[] GetSubTypes()
```

</div>

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

```vbnet
Public Function GetSubTypes() As OpcTypeNodeInfo()
```

</div>

**Returns**

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

An array of [OpcTypeNodeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opctypenodeinfo/) instances representing the sub type nodes using the type node represented as their super type node.

**Remarks**

The time consumed by the first call of the method depends on the availability of the server, because of the nodes are requested on-demand and are cached for subsequent calls. This means, that further sub type requests will take use of already retrieved sub type information and will not demand additional network resources.

### IsSubTypeOf

Determines whether the current represented type node derives from the type node identified by the `nodeId` specified.

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

```csharp
public bool IsSubTypeOf(OpcNodeId nodeId)
```

</div>

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

```vbnet
Public Function IsSubTypeOf(nodeId As OpcNodeId) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the type node its super type relation to the type node represented is to be determined. |

**Returns**

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

The value true if the current type node represented derives from the type node identified by `nodeId`; otherwise the value false.

**Exceptions**

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