在DDD中,Value Object和Enumeration非常漂亮,因此我想在日常程序逻辑中同时使用两者,而不仅仅是域逻辑。当使用自定义的值对象和枚举时,序列化问题来了:我应该使用System.Text.Json.JsonConverter<T>
实现所有的值对象和枚举,还是有什么好的方法来处理序列化和反序列化?
更新:
为了清楚起见,Eumeration
演示如下(ValueObject
派生类相同。):
[JsonConverter(typeof(CustomizedConverter))]
public class CustomizedEnumeration1 : Enumeration
{
public string Customized { get; protected set; }
public ... // some other customized property or class
public CustomizedEnumeration(int id,string name,string customized) : base(id,string) {
Customized = customized;
}
}
public class Customized2 : Enumeration
{ ... }
public class OtherCustomized: Enumeration
{ ... }
在DDD中,属性有时用protected/private setter
密封,反序列化无权设置该值。许多派生类无法按预期进行反序列化,因此我们必须用System.Text.Json.JsonConverter<T>
一对一地重写序列化。重写每个派生的Enumeration
/ Valueobject
转换器是不好的,任何人都可以为此指出任何简单的抽象吗?