C# 反序列化期间不调用函数

C# 反序列化期间不调用函数,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,在类反序列化期间,是否有一种方法不调用函数,如: private int _number public int Number { get { return _number; } set { _number = value //do not call this function during deserialization CallAnotherFunction() } } 当Mong

在类反序列化期间,是否有一种方法不调用函数,如:

private int _number
public int Number
{
    get
    {
        return _number;
    }
    set
    {
        _number = value
        //do not call this function during deserialization
        CallAnotherFunction()
    }
}

当MongoDB反序列化对象并设置
Number
属性时,它正在调用
CallAnotherFunction()
,因为它在集合中。是否有一个标志或任何东西可用于确保在反序列化过程中不会调用
CallAnotherFunction()
?目前,它正在调用函数并在反序列化过程中每次添加重复值。

您可以控制C#MongoDB驱动程序如何序列化和反序列化对象。 在这种情况下,序列化属性本身的instrade的backing字段应该可以解决您的问题。有关控制序列化的更多详细信息,请查看MongoDB文档

使用属性,您的源代码将如下所示:

[BsonElement("Number")]
private int _number

[BsonIgnore]
public int Number  
{
  get { return _number; }
  set {
    _number = value

    //do not call this function during deserialization
    CallAnotherFunction()
  }
}
或者,您可以设置自定义类映射

BsonClassMap.RegisterClassMap<MyClass>(cm => {
   cm.AutoMap();
   cm.UnmapProperty(c => c.Number);
   cm.MapField("_number").SetElementName("Number");
});
BsonClassMap.RegisterClassMap(cm=>{
cm.AutoMap();
cm.不恰当性(c=>c.Number);
cm.MapField(“_编号”).SetElementName(“编号”);
});

我不知道您的问题的答案,但这表明您的设计是错误的-您不应该在设置程序中真正产生副作用,除了分配变量,否则您会遇到此类问题。