Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainClass : IMValueConvertible
- {
- private static readonly IMValueBaseAdapter _myAdapter = new MainClassAdapter();
- public int Id { get; set; }
- public string SomeString { get; set; }
- public List<VehicleDto> Vehicles { get; set; } = new List<VehicleDto>();
- public MainClass(int id, string someString, List<VehicleDto> vehicles)
- {
- Id = id;
- SomeString = someString;
- Vehicles = vehicles;
- }
- public MainClass() { }
- public IMValueBaseAdapter GetAdapter() => _myAdapter;
- }
- public class MainClassAdapter : IMValueAdapter<MainClass>
- {
- private readonly IMValueAdapter<List<VehicleDto>> _vehicleListAdapter;
- public MainClassAdapter()
- {
- _vehicleListAdapter = DefaultMValueAdapters.GetArrayAdapter(new VehicleDataAdapter());
- }
- public MainClass FromMValue(IMValueReader reader)
- {
- reader.BeginObject();
- int id = 0;
- string someString = null;
- List<VehicleDto> vehicles = null;
- while (reader.HasNext())
- {
- switch (reader.NextName())
- {
- case "id":
- id = reader.NextInt();
- break;
- case "someString":
- someString = reader.NextString();
- break;
- case "vehicles":
- vehicles = _vehicleListAdapter.FromMValue(reader);
- break;
- default:
- reader.SkipValue();
- break;
- }
- }
- reader.EndObject();
- return new MainClass(id, someString, vehicles);
- }
- public void ToMValue(MainClass value, IMValueWriter writer)
- {
- writer.BeginObject();
- writer.Name("id");
- writer.Value(value.Id);
- writer.Name("someString");
- writer.Value(value.SomeString);
- writer.Name("vehicles");
- _vehicleListAdapter.ToMValue(value.Vehicles, writer);
- writer.EndObject();
- }
- public void ToMValue(object obj, IMValueWriter writer)
- {
- if (obj is MainClass value)
- {
- ToMValue(value, writer);
- }
- }
- object IMValueBaseAdapter.FromMValue(IMValueReader reader) => FromMValue(reader);
- }
- public class VehicleDto : IMValueConvertible
- {
- private static readonly IMValueBaseAdapter _myAdapter = new VehicleDataAdapter();
- public string Model { get; set; }
- public string PlateText { get; set; }
- public VehicleDto(string model, string plateText)
- {
- Model = model;
- PlateText = plateText;
- }
- public IMValueBaseAdapter GetAdapter() => _myAdapter;
- }
- public class VehicleDataAdapter : IMValueAdapter<VehicleDto>
- {
- public VehicleDto FromMValue(IMValueReader reader)
- {
- reader.BeginObject();
- string model = null;
- string plateText = null;
- while (reader.HasNext())
- {
- switch (reader.NextName())
- {
- case "model":
- model = reader.NextString();
- break;
- case "plateText":
- plateText = reader.NextString();
- break;
- default:
- reader.SkipValue();
- break;
- }
- }
- reader.EndObject();
- return model == null ? null : new VehicleDto(model, plateText);
- }
- public void ToMValue(VehicleDto value, IMValueWriter writer)
- {
- writer.BeginObject();
- writer.Name("model");
- writer.Value(value.Model);
- writer.Name("plateText");
- writer.Value(value.PlateText);
- writer.EndObject();
- }
- public void ToMValue(object obj, IMValueWriter writer)
- {
- if (obj is VehicleDto value)
- {
- ToMValue(value, writer);
- }
- }
- object IMValueBaseAdapter.FromMValue(IMValueReader reader) => FromMValue(reader);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement