Opc.Ua.Com.ComUtils.ProcessComValue C# (CSharp) Method

ProcessComValue() public static method

Converts a COM value to something that UA clients can deal with.
public static ProcessComValue ( object value ) : object
value object
return object
        public static object ProcessComValue(object value)
        {     
            // flatten any multi-dimensional array.
            Array array = value as Array;

            if (array != null)
            {
                if (array.Rank > 1)
                {
                    value = array = Utils.FlattenArray(array);
                }
                
                // convert array of decimal to strings.
                if (array != null && array.GetType().GetElementType() == typeof(decimal))
                {
                    string[] clone = new string[array.Length];

                    for (int ii = 0; ii < array.Length; ii++)
                    {
                        clone[ii] = Convert.ToString(array.GetValue(ii));
                    }
                    
                    value = clone;                        
                }
            }

            // convert scalar decimal to a string.
            if (value is decimal)
            {
                value = Convert.ToString(value);
            }

            // convert scalar DBNull to a null.
            if (value is DBNull)
            {
                value = null;
            }

            return value;
        }