Opc.Ua.Com.Server.ComNamespaceMapper.GetRemoteValue C# (CSharp) Method

GetRemoteValue() public method

Converts a local variant value to a remote variant value.
public GetRemoteValue ( Variant localeValue, TypeInfo remoteType ) : Variant
localeValue Variant The local value.
remoteType TypeInfo The expected type for the remote value.
return Variant
        public Variant GetRemoteValue(Variant localeValue, TypeInfo remoteType)
        {
            TypeInfo localType = localeValue.TypeInfo;

            if (localType == null)
            {
                localType = TypeInfo.Construct(localeValue.Value);
            }

            if (localType.BuiltInType == remoteType.BuiltInType || remoteType.BuiltInType == BuiltInType.Variant)
            {
                return localeValue;
            }

            if (localType.BuiltInType == BuiltInType.ByteString && (remoteType.BuiltInType == BuiltInType.Byte && remoteType.ValueRank != ValueRanks.Scalar))
            {
                return localeValue;
            }

            Array localArray = localeValue.Value as Array;
            
            if (localArray != null && !typeof(byte[]).IsInstanceOfType(localArray)) 
            {
                Array remoteArray = TypeInfo.CastArray(localArray, localType.BuiltInType, remoteType.BuiltInType, ConvertLocalToRemote);
                return new Variant(remoteArray, remoteType);
            }

            object remoteValue = ConvertLocalToRemote(localeValue.Value, localType.BuiltInType, remoteType.BuiltInType);
            return new Variant(remoteValue, remoteType);
        }