private static void WriteFieldAsRawData()

in src/Azure.IIoT.OpcUa/src/Encoders/PubSub/UadpDataSetMessage.cs [694:798]


        private static void WriteFieldAsRawData(BinaryEncoder binaryEncoder, Variant variant,
            PublishedFieldMetaDataModel? fieldMetaData)
        {
            var builtInType = (BuiltInType?)fieldMetaData?.BuiltInType
                ?? variant.TypeInfo?.BuiltInType ?? BuiltInType.Null;
            var valueRank = fieldMetaData?.ValueRank
                ?? variant.TypeInfo?.ValueRank ?? 0;
            if (builtInType == BuiltInType.Null)
            {
                return;
            }
            var valueToEncode = variant.Value;
            if (valueRank == ValueRanks.Scalar)
            {
                switch (builtInType)
                {
                    case BuiltInType.Boolean:
                        binaryEncoder.WriteBoolean(null,
                            Convert.ToBoolean(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.SByte:
                        binaryEncoder.WriteSByte(null,
                            Convert.ToSByte(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Byte:
                        binaryEncoder.WriteByte(null,
                            Convert.ToByte(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Int16:
                        binaryEncoder.WriteInt16(null,
                            Convert.ToInt16(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.UInt16:
                        binaryEncoder.WriteUInt16(null,
                            Convert.ToUInt16(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Int32:
                        binaryEncoder.WriteInt32(null,
                            Convert.ToInt32(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.UInt32:
                        binaryEncoder.WriteUInt32(null,
                            Convert.ToUInt32(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Int64:
                        binaryEncoder.WriteInt64(null,
                            Convert.ToInt64(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.UInt64:
                        binaryEncoder.WriteUInt64(null,
                            Convert.ToUInt64(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Float:
                        binaryEncoder.WriteFloat(null,
                            Convert.ToSingle(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Double:
                        binaryEncoder.WriteDouble(null,
                            Convert.ToDouble(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.DateTime:
                        binaryEncoder.WriteDateTime(null,
                            Convert.ToDateTime(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Enumeration:
                        binaryEncoder.WriteInt32(null,
                            Convert.ToInt32(valueToEncode, CultureInfo.InvariantCulture));
                        break;
                    case BuiltInType.Guid:
                        binaryEncoder.WriteGuid(null, (Uuid)valueToEncode);
                        break;
                    case BuiltInType.String:
                        binaryEncoder.WriteString(null, valueToEncode as string);
                        break;
                    case BuiltInType.ByteString:
                        binaryEncoder.WriteByteString(null, (byte[])valueToEncode);
                        break;
                    case BuiltInType.QualifiedName:
                        binaryEncoder.WriteQualifiedName(null, valueToEncode as QualifiedName);
                        break;
                    case BuiltInType.LocalizedText:
                        binaryEncoder.WriteLocalizedText(null, valueToEncode as LocalizedText);
                        break;
                    case BuiltInType.NodeId:
                        binaryEncoder.WriteNodeId(null, valueToEncode as NodeId);
                        break;
                    case BuiltInType.ExpandedNodeId:
                        binaryEncoder.WriteExpandedNodeId(null, valueToEncode as ExpandedNodeId);
                        break;
                    case BuiltInType.StatusCode:
                        binaryEncoder.WriteStatusCode(null, (StatusCode)valueToEncode);
                        break;
                    case BuiltInType.XmlElement:
                        binaryEncoder.WriteXmlElement(null, valueToEncode as XmlElement);
                        break;
                    case BuiltInType.ExtensionObject:
                        binaryEncoder.WriteExtensionObject(null, valueToEncode as ExtensionObject);
                        break;
                }
            }
            else if (valueRank >= ValueRanks.OneDimension)
            {
                binaryEncoder.WriteArray(null, valueToEncode, valueRank, builtInType);
            }
        }