我正在尝试使用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:''}