У меня есть класс MyClass
. Если я сериализую его без реализации пользовательского конвертера, он станет нечитаемым для человека.
Я реализовал MyClassDTO
и преобразование между MyClass
и MyClassDTO
.
MyClassDTO
читается человеком при использовании стандартной сериализации XStream.
Я хочу написать сериализацию и десериализацию XStream Converter MyClass
.
Реализация для Converter.marshal
должна быть следующей: преобразовать объект MyClass
в MyClassDTO
one и вызвать сериализацию по умолчанию для MyClassDTO
.
А для Converter.unmarshal
: вызвать десериализацию по умолчанию для объекта MyClassDTO
и преобразовать его в MyClass
.
Как реализовать такое поведение простым способом?
Я просмотрел Руководство по XStream Converter , но не нашел то, что мне нужно.
Мне нужно заполнить заглушки ниже:
class MatrixConverter<T> : Converter
where T : new()
{
public bool CanConvert(Type type)
{
return type == typeof(Matrix<T>);
}
public void ToXml(object value, Type expectedType, XStreamWriter writer, MarshallingContext context)
{
Matrix<T> matrix = value as Matrix<T>;
if (matrix == null)
{
throw new ArgumentException();
}
// the code which I am asked about should follow here
}
public object FromXml(Type expectedType, XStreamReader reader, UnmarshallingContext context)
{
Matrix<T> matrix = null;
// the code which I am asked about should follow here
}
}