C#mongodb BigInteger序列化

C#mongodb BigInteger序列化,c#,mongodb,C#,Mongodb,我的目标如下: public abstract class RichPerson{ public string name; public BigInteger money; } 我希望money属性作为字符串存储在mongo中。但是当从mongo中选择文档时,我想用某种构造函数将money属性序列化为BigInteger类型 如何告诉mongo这样做?告诉MongoDB,这是一个字符串,它将完成其余的操作 public class RichPerson {

我的目标如下:

public abstract class RichPerson{
    public string name;
    public BigInteger money;
}
我希望money属性作为字符串存储在mongo中。但是当从mongo中选择文档时,我想用某种构造函数将money属性序列化为BigInteger类型


如何告诉mongo这样做?

告诉MongoDB,这是一个字符串,它将完成其余的操作

public class RichPerson 
   {
      public string name {get; set;}
      [BsonRepresentation(MongoDB.Bson.BsonType.String)]
      public double money {get; set}
   }
编辑答案以显示我用来使其工作的双精度、长精度或十进制数据类型的模型。MongoDB不知道biginteger,抱歉,伙计

  • 模型
  • 另存为字符串
  • 返回模型中的类型(十进制、长型或双精度)

  • 对于任何想知道这是解决方案的人来说。您必须为money字段指定custom[BsonSerializer]。我希望这是正确的做法

    public class RichPerson
    {
        public string name;
        [BsonSerializer(typeof(MySerializer))]
        public BigInteger money;
    }
    
    public class MySerializer : SerializerBase<BigInteger>
    {
        public override BigInteger Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            string val = context.Reader.ReadString();
            return BigInteger.Parse(val);
        }
    
        public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, BigInteger value)
        {
            context.Writer.WriteString(value.ToString());
        }
    }
    
    公共类RichPerson
    {
    公共字符串名称;
    [BsonSerializer(typeof(MySerializer))]
    公共货币;
    }
    公共类MySerializer:SerializerBase
    {
    公共重写BigInteger反序列化(BsonDeserializationContext,BsonDeserializationArgs args args)
    {
    string val=context.Reader.ReadString();
    返回BigInteger.Parse(val);
    }
    公共重写void序列化(BsonSerializationContext、BsonSerializationArgs args args、BigInteger值)
    {
    context.Writer.WriteString(value.ToString());
    }
    }
    
    我可以建议BigInteger不是存储货币的最佳数据类型吗?我现在发布了一个解决方案。我不知道为什么人们会否决这样的问题,或者担心BigInteger不是合适的类型。这显然是一个简化的示例。我得到一个错误:“BsonClassMapSerializer”类型的序列化程序不能使用“BsonRepresentationAttribute”类型的属性进行配置。