有没有一种方法可以为从特定基本类型继承的所有类型设置自定义序列化程序?
给定以下类型:
class Identity<T> {
T Value { get; set; }
}
class StringIdentity : Identity<string> {
}
class PersonIdentity : StringIdentity {
}
使用以下模型:
class Person {
public PersonId Identity { get; set; }
}
和以下序列化器:
class StringIdentitySerializer : IBsonSerializer<StringIdentity>
{
object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
return Deserialize(context, args);
}
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, StringIdentity value)
{
context.Writer.WriteString(value.Value);
}
public StringIdentity Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
return new StringIdentity(context.Reader.ReadString());
}
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
{
Serialize(context, args, value as StringIdentity);
}
public Type ValueType => typeof(StringIdentity);
}
我想,BsonSerializer.RegisterSerializer(typeof(StringIdentity), new StringIdentitySerializer());
将序列我的财产Id
上Person
为字符串。
当我将Id
属性更改为type时,此序列化器将起作用StringIdentity
。
我知道为什么会发生这种情况(PersonIdentity
与类型不同StringIdentity
),但是(没有装饰Person
类)为什么我会在Id
类PersonIdentity
上获取type的属性Person
以使用此序列化程序进行序列化?
因此,执行此操作的方法是注册序列化提供程序。这将使您拦截所有尝试解析身份的尝试,并对其进行任何处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句