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 オブジェクトを取得しようとすると、Details プロパティが Thing で使用されているため 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 の将来のバージョンで可能になりますか?