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); }
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); }
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; }
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; }