1

我有以下类结构:

public class Parent {
    public List<Child> Children { get; set; }
}

public class Child {

}

public class MyParent : Parent {

}

public class MyChild : Child {

}

我创建了 MyParent 的一个实例,并将 MyChild 的一个实例添加到 Children。

当我将 MyParent 保存到 Mongo 时,希望类型为“父母”,每个孩子的类型为“孩子”。相反,它将类型设置为 MyParent 并将每个孩子设置为 MyChild,然后另一个不知道 MyParent 和 MyChild 的程序无法处理它。

我尝试在'MyParent'上方添加[BsonDiscriminator(“Parent”)],与正确设置'_t'值的MyChild相同,但随后我在自己的反序列化应用程序中遇到了一个模棱两可的类错误。

有任何想法吗?谢谢,

4

1 回答 1

1

您不能对两个类使用相同的鉴别器(这就是为什么您会收到关于模棱两可的鉴别器的错误消息)。

这是一个非常奇怪的情况,让你的类结构与你在其他语言中所做的相匹配不是更好吗?

在任何情况下,您都可以通过对基类使用不同的鉴别器来解决歧义(它可能永远不会出现在您的数据库中......)。

[BsonDiscriminator("BaseParent")]
public class Parent
{
    public ObjectId Id { get; set; }
    public List<Child> Children { get; set; }
}

[BsonDiscriminator("BaseChild")]
public class Child
{

}

[BsonDiscriminator("Parent")]
public class MyParent : Parent
{

}

[BsonDiscriminator("Child")]
public class MyChild : Child
{

}
于 2012-08-31T02:40:00.643 回答