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