我有以下课程,我试图补充:
public class Product
{
public readonly Sku Sku;
public string Name { get; private set; }
public string Description { get; private set; }
public bool IsArchived { get; private set; }
public Product(Sku sku, string name, string description, bool isArchived)
{
Sku = sku;
Name = name;
Description = description;
IsArchived = isArchived;
}
}
Run Code Online (Sandbox Code Playgroud)
其中使用以下类来实现我的DDD实体域模型中的概念(删除非相关代码以保持代码简短,设置为只读以在构造后使不可变):
public class Sku
{
public readonly VendorId VendorId;
public readonly string SkuValue;
public Sku(VendorId vendorId, string skuValue)
{
VendorId = vendorId;
SkuValue …Run Code Online (Sandbox Code Playgroud) 使用C#6,我可以编写:
public class Person
{
public Guid Id { get; }
public string Name { get; }
public Person(Guid id, string name)
{
Id = id;
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,MongoDb驱动程序无法正确地序列化这样的类,属性也无法序列化。
MongoDb仅在默认情况下使用getter和setter序列化属性。我知道您可以手动更改类映射,并告诉序列化程序包括仅获取属性,但是我一直在寻找避免自定义每个映射的通用方法。
我正在考虑创建一个类似于ReadWriteMemberFinderConvention的自定义约定,但不进行CanWrite检查。
还有其他解决方案吗?构造函数将被自动调用,还是需要其他自定义?