Beispiel #1
0
        public object GetPrimitiveValue()
        {
            if (IsNull)
            {
                return(null);
            }

            if (ElementType == ElementType.String)
            {
                ICorDebugValue value;
                ComReferenceValue.Dereference(out value);
                var stringValue = value as ICorDebugStringValue;

                if (stringValue != null)
                {
                    uint size = 0;
                    stringValue.GetString(size, out size, new char[0]);
                    char[] buffer = new char[size];
                    stringValue.GetString(size, out size, buffer);
                    return(new string(buffer));
                }

                return(null);
            }
            else
            {
                return(GetElementValue());
            }
        }
Beispiel #2
0
        public RuntimeValue Dereference()
        {
            if (!IsReference)
            {
                throw new InvalidOperationException("Value must be a reference in order to be dereferenced.");
            }

            ICorDebugValue value;

            ComReferenceValue.Dereference(out value);

            if (value == null)
            {
                return(null);
            }

            if (_dereferencedValue == null || _dereferencedValue.ComValue != value)
            {
                _dereferencedValue = new RuntimeValue(Session, value);
            }
            return(_dereferencedValue);
        }