コード例 #1
0
        public RuntimeValue GetFieldValue(RuntimeThread thread, SymbolToken token)
        {
            // TODO: static members

            if (!IsObject)
            {
                throw new InvalidOperationException("Value must be an object in order to get values of fields.");
            }

            RuntimeValue value;

            if (!_fieldValues.TryGetValue(token, out value))
            {
                ICorDebugValue comValue;
                ComObjectValue.GetFieldValue(Type.Class.ComClass, (uint)token.GetToken(), out comValue);
                _fieldValues.Add(token, value = new RuntimeValue(Session, comValue));
            }
            return(value);
        }
コード例 #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);
        }
コード例 #3
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;
        }
コード例 #4
0
        public RuntimeValue GetFieldValue(RuntimeThread thread, SymbolToken token)
        {
            // TODO: static members

            if (!IsObject)
                throw new InvalidOperationException("Value must be an object in order to get values of fields.");

            RuntimeValue value;
            if (!_fieldValues.TryGetValue(token, out value))
            {
                ICorDebugValue comValue;
                ComObjectValue.GetFieldValue(Type.Class.ComClass, (uint)token.GetToken(), out comValue);
                _fieldValues.Add(token, value = new RuntimeValue(Session, comValue));
            }
            return value;
        }