Opc.Ua.XmlDecoder.ReadVariant C# (CSharp) Method

ReadVariant() public method

Reads an Variant from the stream.
public ReadVariant ( string fieldName ) : Variant
fieldName string
return Variant
        public Variant ReadVariant(string fieldName)
        {
            Variant value = new Variant();

            if (BeginField(fieldName, true))
            {
                PushNamespace(Namespaces.OpcUaXsd);

                if (BeginField("Value", true))
                {
                    try
                    {
                        TypeInfo typeInfo = null;
                        object contents = ReadVariantContents(out typeInfo);
                        value = new Variant(contents, typeInfo);
                    }
                    catch(Exception ex)
                    {
                        Utils.Trace(ex, "Error reading variant.");
                        value = new Variant(StatusCodes.BadEncodingError);
                    }
                    EndField("Value");
                }
                
                PopNamespace();
                
                EndField(fieldName);
            }

            return value;
        }
        

Usage Example

        /// <summary>
        /// Updates the attributes from the stream.
        /// </summary>
        /// <param name="context">The context for the system being accessed.</param>
        /// <param name="decoder">The decoder wrapping the stream to read.</param>
        public override void Update(ISystemContext context, XmlDecoder decoder)
        {
            base.Update(context, decoder);

            decoder.PushNamespace(Namespaces.OpcUaXsd);

            if (decoder.Peek("Value"))
            {
                WrappedValue = decoder.ReadVariant("Value");
            }

            if (decoder.Peek("DataType"))
            {
                DataType = decoder.ReadNodeId("DataType");
            }

            if (decoder.Peek("ValueRank"))
            {
                ValueRank = decoder.ReadInt32("ValueRank");
            }

            if (decoder.Peek("ArrayDimensions"))
            {
                ArrayDimensions = BaseVariableState.ArrayDimensionsFromXml(decoder.ReadString("ArrayDimensions"));
            }

            decoder.PopNamespace();
        }
All Usage Examples Of Opc.Ua.XmlDecoder::ReadVariant