это работает:
Код: Выделить всё
public class MySerializer(IObjectGraphVisitor nextVisitor) : ChainedObjectGraphVisitor(nextVisitor)
{
public override bool Enter(IPropertyDescriptor? propertyDescriptor, IObjectDescriptor value, IEmitter context, ObjectSerializer serializer)
{
if (value.Value is not null
&& propertyDescriptor?.GetCustomAttribute() is not null // can lookup attribute here
&& /* other checks */)
{
// serialize it
}
return base.Enter(propertyDescriptor, value, context, serializer);
}
}
Код: Выделить всё
public class MyDeserializer(INodeDeserializer wrapped) : INodeDeserializer
{
public bool Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer)
{
if (reader.Current is MappingStart)
{
// how do I even access the property from here?
// none of the parameters provides the context
}
return wrapped.Deserialize(reader, expectedType, nestedObjectDeserializer, out value, rootDeserializer);
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... serializer
Мобильная версия