我有一个班级:
class Product
{
public String Name { get; private set; }
private List<Release> releases;
private List<Area> areas;
public List<Release> Releases
{
get
{
return new List<Release>(releases);
}
private set
{
releases = value
}
}
public List<Area> Area
{
get
{
return new List<Area>(areas);
}
private set
{
areas = value
}
}
public Product(String Name)
{
this.Name = Name;
this.Releases = new List<Release>();
this.Areas = new List<Area>();
}
public Product(String Name, List<Release> Releases, List<Area> Areas)
{
this.Name = Name;
this.Releases = Releases;
this.Areas = Areas;
}
}
我的理解是Mongodb bson序列化程序将无法自动对序列化Product
对象,因为所有属性/字段都没有公共读写访问权限,并且我不提供无参数构造函数。我怎样才能将其配置为完全de / serializable?我已经查看了mongodb.org上的序列化教程,但它没有涵盖这种情况。我还发现了这个https://jira.mongodb.org/browse/CSHARP-476增强功能,但它还没有实现。
目前我有另一个类ProductDoc
,它具有相同的字段/属性,但它们具有完全的公共读写访问权限,并且我提供了无参数构造函数,因此mongodb驱动程序可以自动调整此类型而没有任何问题,我只是当我需要读写DB时,将Product
个对象转换为ProductDoc
个对象,反之亦然。但即使它非常简单,这看起来也很糟糕。
更新:
似乎我的公共属性上的set访问器是私有的只是属性本身是公共的并且缺少无参数构造函数似乎不会影响de /序列化过程。 。谁能证实这是如何工作的?以及信息here是否正确。
答案 0 :(得分:1)
快速入门教程是正确的。你可以使用私有的getter和setter。但是,如果你曾经担心过,那么试一试测试程序总是最好的答案。 “公共”读/写表示其中一个getter或setter需要公开。