# API Changes in v2.10

> Reference: API changes of Opc.UaFx.Advanced in v2.10: 12 added, 0 removed, 4 changed, 0 obsoleted.

<dl class="api-definition">
<dt>Releases</dt>
<dd>v2.10.0, v2.10.0.1, v2.10.0.2, v2.10.0.3</dd>
<dt>Compared with</dt>
<dd>v2.9.2.1</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced</dd>
</dl>

## Added

### Opc.UaFx

| Symbol | Signature |
|---|---|
| [IOpcApplicationInstance.ProductUri](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcapplicationinstance/members#producturi) | `Uri ProductUri { get; set; }` |
| [OpcApplicationInstance&lt;TTransport, TSecurity&gt;.ProductUri](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#producturi) | `public Uri ProductUri { get; set; }` |
| [OpcDataTypes.GetUnderlyingType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcdatatypes/members#getunderlyingtype-opc-uafx-opcdatatype) | `public static Type GetUnderlyingType(OpcDataType type)` |
| [OpcDataTypes.GetUnderlyingType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcdatatypes/members#getunderlyingtype-opc-uafx-opcnodeid) | `public static Type GetUnderlyingType(OpcNodeId nodeId)` |
| [OpcNode.UpdateChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#updatechanges-opc-uafx-opccontext-opc-uafx-opcnodechanges-system-boolean) | `public void UpdateChanges(OpcContext context, OpcNodeChanges changes, bool recursive)` |
| [OpcNode.UpdateChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#updatechanges-opc-uafx-opccontext-opc-uafx-opcnodechanges) | `public void UpdateChanges(OpcContext context, OpcNodeChanges changes)` |
| [OpcNodeChangesEventArgs](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodechangeseventargs/)<span class="api-meta">3 members</span> | `public class OpcNodeChangesEventArgs : OpcNodeEventArgs` |
| [OpcNodeChangesEventHandler](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodechangeseventhandler/) | `public delegate void OpcNodeChangesEventHandler(object sender, OpcNodeChangesEventArgs e)` |
| [OpcValueRange.Of](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvaluerange/members#of-opc-uafx-opcdatatype) | `public static OpcValueRange Of(OpcDataType type)` |
| [OpcValueRange.Of](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvaluerange/members#of-opc-uafx-opcnodeid) | `public static OpcValueRange Of(OpcNodeId typeId)` |
| [OpcValueRange.Of](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvaluerange/members#of-system-type) | `public static OpcValueRange Of(Type type)` |
| [OpcValueRange.Of&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcvaluerange/members#of-t1) | `public static OpcValueRange Of<T>()` |

## Changed

### Opc.UaFx

| Symbol | Signature (old, new) |
|---|---|
| [OpcNode.AfterApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#afterapplychanges) | `public event EventHandler AfterApplyChanges`<br>`public event OpcNodeChangesEventHandler AfterApplyChanges` |
| [OpcNode.BeforeApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeapplychanges) | `public event EventHandler BeforeApplyChanges`<br>`public event OpcNodeChangesEventHandler BeforeApplyChanges` |
| [OpcNode.OnAfterApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onafterapplychanges) | `protected virtual void OnAfterApplyChanges(EventArgs e)`<br>`protected virtual void OnAfterApplyChanges(OpcNodeChangesEventArgs e)` |
| [OpcNode.OnBeforeApplyChanges](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onbeforeapplychanges) | `protected virtual void OnBeforeApplyChanges(EventArgs e)`<br>`protected virtual void OnBeforeApplyChanges(OpcNodeChangesEventArgs e)` |
