/// <summary> /// 使用属性会发生一些MONO上的移植问题 /// </summary> /// <returns></returns> public void SetValue(BsonValue value, BsonValueEx.BasicType DataType = BsonValueEx.BasicType.BsonUndefined) { txtBsonValue.Visible = false; txtBsonValue.Text = string.Empty; txtBsonValue.ReadOnly = false; radTrue.Visible = false; radFalse.Visible = false; radFalse.Checked = true; dateTimePicker.Visible = false; NumberPick.Visible = false; if (value.IsString) { txtBsonValue.Visible = true; txtBsonValue.Text = value.ToString(); } if (value.IsInt32) { NumberPick.Visible = true; NumberPick.Value = value.AsInt32; } if (value.IsInt64) { NumberPick.Visible = true; NumberPick.Value = value.AsInt64; } if (value.IsDecimal128) { NumberPick.Visible = true; NumberPick.Value = value.AsDecimal; } if (value.IsDouble) { txtBsonValue.Visible = true; txtBsonValue.Text = value.AsDouble.ToString(); } if (value.IsValidDateTime) { dateTimePicker.Visible = true; dateTimePicker.Value = value.ToUniversalTime(); } if (value.IsBsonMaxKey || value.IsBsonMinKey) { txtBsonValue.Visible = true; txtBsonValue.Enabled = false; txtBsonValue.Text = value.ToString(); } if (value.IsBoolean) { radTrue.Visible = true; radFalse.Visible = true; if (value.AsBoolean) { radTrue.Checked = true; } else { radFalse.Checked = true; } } if (value.IsBsonArray) { if (GetArray == null) { MessageBox.Show("GetArray委托不存在!"); return; } if (DataType == BsonValueEx.BasicType.BsonLegacyPoint) { //地理 var t = GetGeoPoint(); if (t != null) { _mBsonArray = t; txtBsonValue.Visible = true; txtBsonValue.Text = _mBsonArray.ToString(); txtBsonValue.ReadOnly = true; } } else { //普通数组 var t = GetArray(); if (t != null) { _mBsonArray = t; txtBsonValue.Visible = true; txtBsonValue.Text = _mBsonArray.ToString(); txtBsonValue.ReadOnly = true; } } } if (value.IsBsonDocument) { if (GetDocument == null) { MessageBox.Show("GetDocument委托不存在!"); return; } if (DataType == BsonValueEx.BasicType.BsonGeoJSON) { //地理 var t = GetGeoPoint(); if (t != null) { _mBsonDocument = new BsonDocument("type", "Point"); _mBsonDocument.Add("coordinates", t); txtBsonValue.Visible = true; txtBsonValue.Text = _mBsonDocument.ToString(); txtBsonValue.ReadOnly = true; } } else { var t = GetDocument(); if (t != null) { _mBsonDocument = t; txtBsonValue.Visible = true; txtBsonValue.Text = _mBsonDocument.ToString(); txtBsonValue.ReadOnly = true; } } } if (value.IsBsonBinaryData) { txtBsonValue.Visible = true; txtBsonValue.Text = Encoding.Default.GetString(value.AsBsonBinaryData.Bytes); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void DataTypeChanged(BsonValueEx.BasicType DataType) { txtBsonValue.Visible = false; radTrue.Visible = false; radFalse.Visible = false; SetValue(BsonValueEx.GetInitValue(DataType), DataType); }
/// <summary> /// 使用属性会发生一些MONO上的移植问题 /// </summary> /// <returns></returns> public BsonValue GetValue(BsonValueEx.BasicType DataType) { BsonValue mValue = null; switch (DataType) { case BsonValueEx.BasicType.BsonString: mValue = new BsonString(txtBsonValue.Text); break; case BsonValueEx.BasicType.BsonInt32: mValue = new BsonInt32(Convert.ToInt32(NumberPick.Value)); break; case BsonValueEx.BasicType.BsonInt64: mValue = new BsonInt64(Convert.ToInt64(NumberPick.Value)); break; case BsonValueEx.BasicType.BsonDecimal128: mValue = new BsonDecimal128(Convert.ToDecimal(NumberPick.Value)); break; case BsonValueEx.BasicType.BsonDouble: mValue = new BsonDouble(Convert.ToDouble(txtBsonValue.Text)); break; case BsonValueEx.BasicType.BsonDateTime: mValue = new BsonDateTime(dateTimePicker.Value); break; case BsonValueEx.BasicType.BsonBoolean: mValue = radTrue.Checked ? BsonBoolean.True : BsonBoolean.False; break; case BsonValueEx.BasicType.BsonArray: case BsonValueEx.BasicType.BsonLegacyPoint: mValue = _mBsonArray; break; case BsonValueEx.BasicType.BsonGeoJSON: case BsonValueEx.BasicType.BsonDocument: mValue = _mBsonDocument; break; case BsonValueEx.BasicType.BsonMaxKey: mValue = BsonMaxKey.Value; break; case BsonValueEx.BasicType.BsonMinKey: mValue = BsonMinKey.Value; break; case BsonValueEx.BasicType.BsonBinary: mValue = new BsonBinaryData(Encoding.Default.GetBytes(txtBsonValue.Text)); break; } return mValue; }
/// <summary> /// 各种基本类型的初始值 /// </summary> /// <param name="DataType"></param> /// <returns></returns> public static BsonValue GetInitValue(BsonValueEx.BasicType DataType) { BsonValue InitValue = BsonNull.Value; switch (DataType) { case BasicType.BsonString: InitValue = new BsonString(string.Empty); break; case BasicType.BsonInt32: InitValue = new BsonInt32(0); break; case BasicType.BsonInt64: InitValue = new BsonInt64(0); break; case BasicType.BsonDecimal128: InitValue = new BsonDecimal128(0); break; case BasicType.BsonDouble: InitValue = new BsonDouble(0); break; case BasicType.BsonDateTime: InitValue = new BsonDateTime(DateTime.Now); break; case BasicType.BsonBoolean: InitValue = BsonBoolean.False; break; case BasicType.BsonArray: InitValue = new BsonArray(); break; case BasicType.BsonDocument: InitValue = new BsonDocument(); break; case BasicType.BsonLegacyPoint: InitValue = new BsonArray() { 0, 0 }; break; case BasicType.BsonGeoJSON: InitValue = new BsonDocument("type", "Point"); InitValue.AsBsonDocument.Add("coordinates", new BsonArray() { 0, 0 }); break; case BasicType.BsonMaxKey: InitValue = BsonMaxKey.Value; break; case BasicType.BsonMinKey: InitValue = BsonMinKey.Value; break; case BasicType.BsonBinary: InitValue = new BsonBinaryData(new byte[0]); break; default: break; } return InitValue; }