我如何将一个类反序列化为内部属性的类型?

时间:2019-09-03 02:15:13

标签: c# json mongodb bson

我正在尝试使用DDD,因此我不想只使用Guid作为我所有对象的ID,所以我将通用类型GuidId<Entity>保留为某种类型安全。大致如下:

public class GuidId<T> where T : Entity
{
    public Guid Value { get; private set; }

    public static GuidId<T> Create() => Create(Guid.NewGuid());

    public static implicit operator Guid(GuidId<T> id) => id.Value;
    public static implicit operator GuidId<T>(Guid id) => new GuidId<T>(id);
}

MongoDB当前进行序列化是这样的

"aggregateId" : {
    "value" : UUID("77e19ff1-ca08-473e-8108-01945eb8d504")
}

但是我只想要:

"aggregateId" : UUID("77e19ff1-ca08-473e-8108-01945eb8d504")

我玩了几个小时的自定义序列化程序,但无济于事。我觉得应该使用一种我定义的implicit operator来做到这一点的简便方法?目前,我已经决定制作一个单独的持久性类,该类仅使用Guid,并且使用AutoMapper在它们之间进行映射。

另外,我想通过RESTful API传递这些Guid,而不必定义{value:''}

0 个答案:

没有答案