我正在使用 C# 驱动程序使用 MongoDB。问题是,我想在 MongoDB 中存储不同类型的对象,包括一些公共字段和不同的详细信息字段。不同的客户端处理数据库中的不同类型。
代码如下所示:
class Things
{
public string Name {get;set;}
public string User { get; set; }
public ObjectId Id { get; set; }
public virtual Dictionary<string, object> Details { get; set; }
}
class Pc:Things
{
public new Detail Details { get; set; }
}
class Detail
{
public string cpu { get; set; }
public int ram { get; set; }
public int hdd { get; set; }
}
当我进行查询并尝试获取 Pc 对象时,它会抛出一个异常,指出在 Things 中使用了 Details 属性,因此它不能在 Pc 中使用。我猜,在反序列化对象期间会引发期望。
当我上另一堂课时:
class Pc2
{
public string Name { get; set; }
public string User { get; set; }
public ObjectId Id { get; set; }
public Detail Details { get; set; }
}
这与 Thing 相同,但使用 Details 作为 Detail 类型,一切正常。
我做错了吗?或者这在 CSharpDriver 的未来版本中是否可行?