MongoDB C#驱动程序(2.7)和序列化问题

MongoDB C#驱动程序(2.7)和序列化问题,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我目前对最新的mongodb c#驱动程序(2.7)、继承和序列化有一个奇怪的问题 下面是我正在使用的一个超级简化的类层次结构: public abstract class BaseClass { public Guid Id { get; private set; } protected BaseClass(Guid id) { Id = id; } } public class DerivedClass : BaseClass {

我目前对最新的mongodb c#驱动程序(2.7)、继承和序列化有一个奇怪的问题

下面是我正在使用的一个超级简化的类层次结构:

public abstract class BaseClass
{
    public Guid Id { get; private set; }

    protected BaseClass(Guid id)
    {
        Id = id;
    }
}

public class DerivedClass : BaseClass
{
    public DerivedClass(Guid id) : base(id) {}
}
当我尝试注册mongo序列化的类时,我得到一个错误:

var type = typeof(DerivedClass);

if (BsonClassMap.IsClassMapRegistered(type))
    return;

var cm = new BsonClassMap(type);
cm.AutoMap();

BsonClassMap.RegisterClassMap(cm);
错误是:

The memberInfo argument must be for class DerivedClass, but was for class BaseClass.
Parameter name: memberInfo
现在,这就是事情开始变得奇怪的地方,当我试图理解发生了什么时,我对基类或DerivedClass做了一些更改

下面列出的两个更改中的任何一个都将使
RegisterClassMap
方法正常工作而不会出错

更改1:在基类上添加第二个未使用的属性

public abstract class BaseClass
{
    public Guid Id { get; private set; }
    public string Test { get; }

    protected BaseClass(Guid id)
    {
        Id = id;
    }
}
public abstract class BaseClass
{
    public Guid Id { get; protected set; }

    protected BaseClass(Guid id)
    {
        Id = id;
    }
}
更改2:将Id属性更改为具有非私有setter(任何其他作品)

我的问题是。。。发生了什么事?虽然我可能同意,对于序列化程序,对于要映射的类(在本例中为DerivedClass)上的每个属性,都应该有一个可访问的setter,但为什么case#1实际上没有给出任何错误