# OpcNode Class

> Reference: Represents the base class of the node classes which define the nodes of an address space, such as OpcObjectNode, OpcVariableNode and OpcMethodNode.

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

Represents the base class of the node classes which define the nodes of an address space, such as [OpcObjectNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcobjectnode/), [OpcVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvariablenode/) and [OpcMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcmethodnode/).

## Syntax

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

```csharp
public class OpcNode
```

</div>

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

```vbnet
Public Class OpcNode
```

</div>

## Inheritance

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

## Implements

<ul class="api-implements">
<li><a href="../opc.uafx.iopcnode/">IOpcNode</a></li>
<li><a href="../opc.uafx.iopcnodeinfo/">IOpcNodeInfo</a></li>
</ul>

## Derived types

- [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/)
- [OpcTypeNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctypenode/)

## Properties

| Name | Description |
|---|---|
| [Category](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#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. |
| [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#description) | Gets or sets 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. |
| [Descriptions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#descriptions)<span class="api-meta">since v2.12</span> | Gets the [OpcNodeGlobalization](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeglobalization/) instance used to control the localization and other globalization related tasks for the [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#description) attribute of the current node. |
| [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#displayname) | Gets or sets 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. |
| [DisplayNames](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#displaynames)<span class="api-meta">since v2.12</span> | Gets the [OpcNodeGlobalization](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeglobalization/) instance used to control the localization and other globalization related tasks for the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#displayname) attribute of the current node. |
| [HasPendingChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#haspendingchanges) | Gets a value indiciating whether there exists any pending change on the node. |
| [Id](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#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. |
| [Model](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#model)<span class="api-meta">since v2.50</span> | Gets the [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which has been used to model this OpcNode regarding its whole representation in the address space. |
| [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name) | Gets or sets 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. |
| [Namespace](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#namespace) | Gets the namespace of the node. |
| [Parent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#parent)<span class="api-meta">virtual</span> | Gets the parent node of the node. |
| [PendingChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#pendingchanges) | Gets a value indicating the most recent changes performed on the node since their last notification. |
| [QueryEventsCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#queryeventscallback) | Gets or sets a callback used to query any event information which belongs to the node. |
| [ReadDescriptionCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readdescriptioncallback) | Gets or sets a callback used to read the value of the [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#description) attribute. |
| [ReadDisplayNameCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readdisplaynamecallback)<span class="api-meta">since v2.11</span> | Gets or sets a callback used to read the value of the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#displayname) attribute. |
| [ReadUserWriteAccessCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readuserwriteaccesscallback) | Gets or sets a callback used to read the value of the [UserWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#userwriteaccess) attribute. |
| [ReadWriteAccessCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readwriteaccesscallback) | Gets or sets a callback used to read the value of the [WriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#writeaccess) attribute. |
| [SymbolicName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#symbolicname) | Gets or sets a symbolic name for the node which is not expected to be globally unique. |
| [Tag](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#tag) | Gets or sets the object that contains additional user data about the node. |
| [UserWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#userwriteaccess) | Gets or sets 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. |
| [WriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writeaccess) | Gets or sets 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 posibilities of a client to write the attributes of the node. |
| [WriteDescriptionCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writedescriptioncallback) | Gets or sets a callback used to write the value of the [Description](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#description) attribute. |
| [WriteDisplayNameCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writedisplaynamecallback)<span class="api-meta">since v2.11</span> | Gets or sets a callback used to write the value of the [DisplayName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#displayname) attribute. |
| [WriteUserWriteAccessCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writeuserwriteaccesscallback) | Gets or sets a callback used to write the value of the [UserWriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#userwriteaccess) attribute. |
| [WriteWriteAccessCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writewriteaccesscallback) | Gets or sets a callback used to write the value of the [WriteAccess](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcattribute/#writeaccess) attribute. |

## Methods

| Name | Description |
|---|---|
| [AddNotifier](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#addnotifier)<span class="api-meta">virtual</span> | When implemented in a subtype, adds the `node` to the collection of notifiers (= event sources) of this node. |
| [ApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#applychanges)<span class="api-meta">virtual · 2 overloads</span> | Notifies about changes performed on the node since the last notification and resets the pending changes to [None](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodechanges/#none). |
| [AttributeValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#attributevalue)<span class="api-meta">2 overloads · since v2.9</span> | Retrieves the value of the `attribute` specified. |
| [Child](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#child)<span class="api-meta">since v2.7</span> | Retrieves the child node its [Name](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#name) property matches exactly the `name` specified. |
| [ChildModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#childmodel)<span class="api-meta">protected · since v2.50</span> | Retrieves the model of the child node with the `name` specified from the [Model](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#model) of the node. |
| [ChildModellingDirective](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#childmodellingdirective)<span class="api-meta">protected · since v2.50</span> | Retrieves the modelling directive of the child node with the `name` specified from the [Model](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#model) of the node. |
| [Children](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#children) | Retrieves a sequence of all nodes organized as children of this node. |
| [DefineModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#definemodel)<span class="api-meta">protected · static · 2 overloads · since v2.27</span> | Defines a model rule for the model of the node type specified by `T` using the `rule` which is to be applied to the node known under the `path` passed. |
| [GetType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#gettype)<span class="api-meta">static · since v2.20</span> | Retrieves the [Type](https://learn.microsoft.com/dotnet/api/system.type) which implementes the node type which is identified by the `typeId` specified. |
| [GetTypeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#gettypeinfo)<span class="api-meta">static · 3 overloads · since v2.20</span> | Retrieves the [OpcNodeTypeInfo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodetypeinfo/) which declares the node type implemented by the `T` specified. |
| [Implement](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#implement)<span class="api-meta">protected · virtual · since v2.26</span> | Performs node specific implementation tasks to finalize the node creation before it can be used for the first time. |
| [InitializeChildren](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#initializechildren)<span class="api-meta">protected · virtual · since v2.54</span> | Initializes the children of the node. |
| [InitializeDefaults](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#initializedefaults)<span class="api-meta">protected · virtual</span> | Initializes the default values used by the node implementation represented / required. |
| [IsAccessible](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#isaccessible)<span class="api-meta">virtual · since v2.54</span> | Determines whether the node is accessible using the `context` specified within the view identified by the `viewId` specified. |
| [IsChangePending](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#ischangepending) | Determines whether all of the changes specified by the `change` are pending on the node (see [PendingChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#pendingchanges)). |
| [OnAfterAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onafteradded)<span class="api-meta">protected · virtual · since v2.26</span> | Raises the [AfterAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#afteradded) event using the event data specified. |
| [OnAfterApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onafterapplychanges)<span class="api-meta">protected · virtual · since v2.10</span> | Raises the [AfterApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#afterapplychanges) event using the event data specified. |
| [OnBeforeAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onbeforeadded)<span class="api-meta">protected · virtual · since v2.26</span> | Raises the [BeforeAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeadded) event using the event data specified. |
| [OnBeforeApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onbeforeapplychanges)<span class="api-meta">protected · virtual · since v2.10</span> | Raises the [BeforeApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeapplychanges) event using the event data specified. |
| [OnChangesUnhandled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onchangesunhandled)<span class="api-meta">protected · virtual · since v2.50</span> | Raises the [ChangesUnhandled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#changesunhandled) event using the event data specified. |
| [OnEventReported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#oneventreported)<span class="api-meta">protected · virtual · since v2.54</span> | Raises the [EventReported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#eventreported) event using the event data specified. |
| [QueryEventsCore](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#queryeventscore)<span class="api-meta">protected · virtual</span> | Queries the events which belong to the node using the [QueryEventsCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#queryeventscallback), if one is assigned. |
| [ReadAttributeValueCore](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#readattributevaluecore)<span class="api-meta">protected · virtual</span> | Determines the value of the attribute to read. |
| [References](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#references)<span class="api-meta">virtual · since v2.50</span> | Retrieves a sequence of immutable references between this node and other nodes. |
| [RegisterType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#registertype)<span class="api-meta">static · 4 overloads · since v2.20</span> | Registers the type defined by `T` as the node object type to create in case there a node instance is to be created for the type definition identified by the [OpcNodeTypeAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodetypeattribute/) defined on the `T` specified. |
| [RegisterTypes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#registertypes)<span class="api-meta">static · 3 overloads · since v2.20</span> | Registers all non-abstract types in the `assembly` specified which defines the [OpcNodeTypeAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodetypeattribute/). |
| [RemoveNotifier](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#removenotifier)<span class="api-meta">virtual</span> | Removes the `node` from the collection of notifiers (= event sources) of this node. |
| [ReportEvent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#reportevent) | Reports the `eventData` specified to all nodes this OpcNode is a notifier of. |
| [ResolveModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#resolvemodel)<span class="api-meta">protected · virtual · since v2.54</span> | Resolves the [Model](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#model) of the node. |
| [ResumeModelChangeEvents](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#resumemodelchangeevents)<span class="api-meta">since v2.50</span> | Resumes model change tracking and events for this OpcNode and optionally for all children. |
| [SuspendModelChangeEvents](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#suspendmodelchangeevents)<span class="api-meta">since v2.50</span> | Temporarily suspends model change tracking and events for this OpcNode and optionally for all children. |
| [UnregisterType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#unregistertype)<span class="api-meta">static · 2 overloads · since v2.20</span> | Unregisters the previously registered (see [RegisterType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#registertype-t1)) type defined by `T` as the [object](https://learn.microsoft.com/dotnet/api/system.object) type to not longer create for the type node identified by the [OpcNodeTypeAttribute](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodetypeattribute/) defined on the `T` specified. |
| [UnregisterTypes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#unregistertypes)<span class="api-meta">static · 3 overloads · since v2.20</span> | Unregisters all previously registered types (see [RegisterTypes](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#registertypes-system-reflection-assembly)) in the `assembly` specified. |
| [UpdateChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#updatechanges)<span class="api-meta">2 overloads · since v2.10</span> | Notifies about the `changes` on behalf of the node and removes pending changes which intersect with the `changes` specified. |
| [WriteAttributeValueCore](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#writeattributevaluecore)<span class="api-meta">protected · virtual</span> | Determines the value of the attribute to write. |

## Events

| Name | Description |
|---|---|
| [AfterAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#afteradded)<span class="api-meta">since v2.26</span> | Occurs after the node has been added to the address space. |
| [AfterApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#afterapplychanges) | Occurs after one or more changes on the node has been notified. |
| [BeforeAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeadded)<span class="api-meta">since v2.26</span> | Occurs before the node is added to the address space. |
| [BeforeApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeapplychanges) | Occurs before one or more changes on the node are notified. |
| [ChangesUnhandled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#changesunhandled)<span class="api-meta">since v2.50</span> | Occurs when changes applied with [ApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#applychanges-opc-uafx-opccontext) are not monitored or discarded by all monitored items. |
| [EventReported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#eventreported)<span class="api-meta">since v2.54</span> | Occurs after an event has been reported using [ReportEvent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#reportevent). |

## Applies to

| Package | Versions |
|---|---|
| Opc.UaFx.Advanced | v2.5–v2.59 |
