![](dotnetdiagramimages/OpcLabs_ServerOpcUA_OpcLabs_EasyOpc_UA_NodeSpace_UAFolder.png)
'Declaration
<ComVisibleAttribute(False)> <ExceptionContractAnnotationAttribute(True)> <TypeConverterAttribute(OpcLabs.EasyOpc.UA.NodeSpace.Implementation.UAFolderConverter)> <DefaultMemberAttribute("Item")> <DefaultEventAttribute("Read")> <CLSCompliantAttribute(True)> <DesignerCategoryAttribute("Component")> <SerializableAttribute()> Public Class UAFolder Inherits UAServerNode Implements OpcLabs.BaseLib.ComponentModel.IReadOnlyStartable, OpcLabs.BaseLib.ComponentModel.IStartableEvents, OpcLabs.BaseLib.Graphs.ITreeTraversable, OpcLabs.BaseLib.Graphs.ITreeTraversable(Of Node), OpcLabs.BaseLib.Graphs.ITreeTraversable(Of UAServerNode), OpcLabs.BaseLib.IValueEquatable, OpcLabs.BaseLib.Licensing.ILicensingContextHolder, OpcLabs.BaseLib.NodeSpace.INode, OpcLabs.BaseLib.Widgets.ComTypes._Widget, OpcLabs.BaseLib.Widgets.IWidget, IUAGenericServerEvents, System.Collections.Generic.IEnumerable(Of Node), System.Collections.IEnumerable, System.ComponentModel.IComponent, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging, System.ICloneable, System.IDisposable, System.IServiceProvider, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
'Usage
Dim instance As UAFolder
[ComVisible(false)] [ExceptionContractAnnotation(true)] [TypeConverter(OpcLabs.EasyOpc.UA.NodeSpace.Implementation.UAFolderConverter)] [DefaultMember("Item")] [DefaultEvent("Read")] [CLSCompliant(true)] [DesignerCategory("Component")] [Serializable()] public class UAFolder : UAServerNode, OpcLabs.BaseLib.ComponentModel.IReadOnlyStartable, OpcLabs.BaseLib.ComponentModel.IStartableEvents, OpcLabs.BaseLib.Graphs.ITreeTraversable, OpcLabs.BaseLib.Graphs.ITreeTraversable<Node>, OpcLabs.BaseLib.Graphs.ITreeTraversable<UAServerNode>, OpcLabs.BaseLib.IValueEquatable, OpcLabs.BaseLib.Licensing.ILicensingContextHolder, OpcLabs.BaseLib.NodeSpace.INode, OpcLabs.BaseLib.Widgets.ComTypes._Widget, OpcLabs.BaseLib.Widgets.IWidget, IUAGenericServerEvents, System.Collections.Generic.IEnumerable<Node>, System.Collections.IEnumerable, System.ComponentModel.IComponent, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging, System.ICloneable, System.IDisposable, System.IServiceProvider, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
[ComVisible(false)] [ExceptionContractAnnotation(true)] [TypeConverter(OpcLabs.EasyOpc.UA.NodeSpace.Implementation.UAFolderConverter)] [DefaultMember("Item")] [DefaultEvent("Read")] [CLSCompliant(true)] [DesignerCategory("Component")] [Serializable()] public ref class UAFolder : public UAServerNode, OpcLabs.BaseLib.ComponentModel.IReadOnlyStartable, OpcLabs.BaseLib.ComponentModel.IStartableEvents, OpcLabs.BaseLib.Graphs.ITreeTraversable, OpcLabs.BaseLib.Graphs.ITreeTraversable<Node>, OpcLabs.BaseLib.Graphs.ITreeTraversable<UAServerNode>, OpcLabs.BaseLib.IValueEquatable, OpcLabs.BaseLib.Licensing.ILicensingContextHolder, OpcLabs.BaseLib.NodeSpace.INode, OpcLabs.BaseLib.Widgets.ComTypes._Widget, OpcLabs.BaseLib.Widgets.IWidget, IUAGenericServerEvents, System.Collections.Generic.IEnumerable<Node>, System.Collections.IEnumerable, System.ComponentModel.IComponent, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging, System.ICloneable, System.IDisposable, System.IServiceProvider, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
Folders in OPC UA serve as organizational units that can contain variables, other folders, or both. They help in structuring the node space of an OPC UA server in a hierarchical manner, making it easier for clients to browse and interact with the server's address space.
If you are doing client development as well, an instance of UAFolder can be implicitly converted to a OpcLabs.EasyOpc.UA.UANodeDescriptor, which means that it can be directly used in place of OpcLabs.EasyOpc.UA.UANodeDescriptor parameters anywhere in the client code. If your language does not support implicit conversion operators, use the UAServerNode.EffectiveNodeDescriptor property instead.
// This example shows how to folders nested in another folders. // You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-OPCStudio-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.NodeSpace; namespace UAServerDocExamples._UAFolder { class _Building { public static void Nested() { // Instantiate the server object. // By default, the server will run on endpoint URL "opc.tcp://localhost:48040/". var server = new EasyUAServer(); // Create a structure where a folder contains another folders, and the nested folders contains data variables. server.Add(new UAFolder("Folder1") { new UAFolder("NestedFolder1") { new UADataVariable("Constant").ConstantValue(42) }, new UAFolder("NestedFolder2"), new UADataVariable("Constant").ConstantValue("abc") }); server.Add(new UAFolder("Folder2")); // Start the server. Console.WriteLine("The server is starting..."); server.Start(); Console.WriteLine("The server is started."); Console.WriteLine(); // Let the user decide when to stop. Console.WriteLine("Press Enter to stop the server..."); Console.ReadLine(); // Stop the server. Console.WriteLine("The server is stopping..."); server.Stop(); Console.WriteLine("The server is stopped."); } } }
' This example shows how to folders nested in another folders. ' You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET . ' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own ' a commercial license in order to use Online Forums, and we reply to every post. Imports System Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.NodeSpace Namespace _UAFolder Partial Friend Class _Building Shared Sub Nested() ' Instantiate the server object. ' By default, the server will run on endpoint URL "opc.tcp://localhost:48040/". Dim server = New EasyUAServer() ' Create a structure where a folder contains another folders, and the nested folders contains data variables. server.Add(New UAFolder("UAFolder") From { New UAFolder("NestedFolder1") From { New UADataVariable("Constant").ConstantValue(42) }, New UAFolder("NestedFolder2"), New UADataVariable("Constant").ConstantValue("abc") }) server.Add(New UAFolder("Folder2")) ' Start the server. Console.WriteLine("The server is starting...") server.Start() Console.WriteLine("The server is started.") Console.WriteLine() ' Let the user decide when to stop. Console.WriteLine("Press Enter to stop the server...") Console.ReadLine() ' Stop the server. Console.WriteLine("The server is stopping...") server.Stop() Console.WriteLine("The server is stopped.") End Sub End Class End Namespace
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
OpcLabs.BaseLib.Widgets.Widget
OpcLabs.BaseLib.NodeSpace.Node
OpcLabs.BaseLib.NodeSpace.NodeFrontEnd
OpcLabs.EasyOpc.UA.NodeSpace.UAServerNode
OpcLabs.EasyOpc.UA.NodeSpace.UAFolder