Introduce and use BaseMetadataSerializer

This commit is contained in:
Matt Nadareski
2025-09-26 16:00:33 -04:00
parent 0f5f866cd2
commit f1ace61076
33 changed files with 82 additions and 96 deletions

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.ArchiveDotOrg;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class ArchiveDotOrg : ICrossModel<Files, Data.Models.Metadata.MetadataFile>
public partial class ArchiveDotOrg : BaseMetadataSerializer<Files>
{
/// <inheritdoc/>
public Files? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Files? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.ArchiveDotOrg;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class ArchiveDotOrg : ICrossModel<Files, Data.Models.Metadata.MetadataFile>
public partial class ArchiveDotOrg : BaseMetadataSerializer<Files>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Files? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Files? item)
{
if (item == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.AttractMode;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class AttractMode : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class AttractMode : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.AttractMode;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class AttractMode : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class AttractMode : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -0,0 +1,15 @@
using SabreTools.Data.Models.Metadata;
using SabreTools.Serialization.Interfaces;
/// <summary>
/// Base class for <see cref="MetadataFile"/> cross-model serializers
/// </summary>
/// <typeparam name="TModel">Model convertable to <see cref="MetadataFile"/></typeparam>
public abstract class BaseMetadataSerializer<TModel> : ICrossModel<TModel, MetadataFile>
{
/// <inheritdoc/>
public abstract TModel? Deserialize(MetadataFile? obj);
/// <inheritdoc/>
public abstract MetadataFile? Serialize(TModel? obj);
}

View File

@@ -1,13 +1,13 @@
using System;
using SabreTools.Data.Models.ClrMamePro;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class ClrMamePro : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class ClrMamePro : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj) => Deserialize(obj, true);
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
=> Deserialize(obj, true);
/// <inheritdoc cref="Deserialize(Data.Models.Metadata.MetadataFile)"/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj, bool game)

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.ClrMamePro;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class ClrMamePro : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class ClrMamePro : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.DosCenter;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class DosCenter : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class DosCenter : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.DosCenter;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class DosCenter : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class DosCenter : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.EverdriveSMDB;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class EverdriveSMDB : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class EverdriveSMDB : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.EverdriveSMDB;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class EverdriveSMDB : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class EverdriveSMDB : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -2,14 +2,14 @@ using System;
using System.Collections.Generic;
using SabreTools.Data.Models.Hashfile;
using SabreTools.Hashing;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Hashfile : ICrossModel<Data.Models.Hashfile.Hashfile, Data.Models.Metadata.MetadataFile>
public partial class Hashfile : BaseMetadataSerializer<Data.Models.Hashfile.Hashfile>
{
/// <inheritdoc/>
public Data.Models.Hashfile.Hashfile? Deserialize(Data.Models.Metadata.MetadataFile? obj) => Deserialize(obj, HashType.CRC32);
public override Data.Models.Hashfile.Hashfile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
=> Deserialize(obj, HashType.CRC32);
/// <inheritdoc/>
public Data.Models.Hashfile.Hashfile? Deserialize(Data.Models.Metadata.MetadataFile? obj, HashType hash)

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.Hashfile;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Hashfile : ICrossModel<Data.Models.Hashfile.Hashfile, Data.Models.Metadata.MetadataFile>
public partial class Hashfile : BaseMetadataSerializer<Data.Models.Hashfile.Hashfile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Hashfile.Hashfile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Hashfile.Hashfile? obj)
{
if (obj == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.Listrom;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Listrom : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class Listrom : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.Listrom;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Listrom : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class Listrom : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.Listxml;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Listxml : ICrossModel<Mame, Data.Models.Metadata.MetadataFile>
public partial class Listxml : BaseMetadataSerializer<Mame>
{
/// <inheritdoc/>
public Mame? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Mame? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.Listxml;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Listxml : ICrossModel<Mame, Data.Models.Metadata.MetadataFile>
public partial class Listxml : BaseMetadataSerializer<Mame>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Mame? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Mame? item)
{
if (item == null)
return null;

View File

@@ -1,13 +1,13 @@
using System;
using SabreTools.Data.Models.Logiqx;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Logiqx : ICrossModel<Datafile, Data.Models.Metadata.MetadataFile>
public partial class Logiqx : BaseMetadataSerializer<Datafile>
{
/// <inheritdoc/>
public Datafile? Deserialize(Data.Models.Metadata.MetadataFile? obj) => Deserialize(obj, false);
public override Datafile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
=> Deserialize(obj, false);
/// <inheritdoc/>
public Datafile? Deserialize(Data.Models.Metadata.MetadataFile? obj, bool game)

View File

@@ -1,13 +1,12 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.Logiqx;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Logiqx : ICrossModel<Datafile, Data.Models.Metadata.MetadataFile>
public partial class Logiqx : BaseMetadataSerializer<Datafile>
{
public Data.Models.Metadata.MetadataFile? Serialize(Datafile? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Datafile? item)
{
if (item == null)
return null;

View File

@@ -1,12 +1,11 @@
using System;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class M1 : ICrossModel<Data.Models.Listxml.M1, Data.Models.Metadata.MetadataFile>
public partial class M1 : BaseMetadataSerializer<Data.Models.Listxml.M1>
{
/// <inheritdoc/>
public Data.Models.Listxml.M1? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Data.Models.Listxml.M1? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,12 +1,11 @@
using System;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class M1 : ICrossModel<Data.Models.Listxml.M1, Data.Models.Metadata.MetadataFile>
public partial class M1 : BaseMetadataSerializer<Data.Models.Listxml.M1>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Listxml.M1? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Listxml.M1? item)
{
if (item == null)
return null;

View File

@@ -1,12 +1,11 @@
using System;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Mess : ICrossModel<Data.Models.Listxml.Mess, Data.Models.Metadata.MetadataFile>
public partial class Mess : BaseMetadataSerializer<Data.Models.Listxml.Mess>
{
/// <inheritdoc/>
public Data.Models.Listxml.Mess? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Data.Models.Listxml.Mess? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,12 +1,11 @@
using System;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class Mess : ICrossModel<Data.Models.Listxml.Mess, Data.Models.Metadata.MetadataFile>
public partial class Mess : BaseMetadataSerializer<Data.Models.Listxml.Mess>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Listxml.Mess? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Data.Models.Listxml.Mess? item)
{
if (item == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.OfflineList;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class OfflineList : ICrossModel<Dat, Data.Models.Metadata.MetadataFile>
public partial class OfflineList : BaseMetadataSerializer<Dat>
{
/// <inheritdoc/>
public Dat? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Dat? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.OfflineList;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class OfflineList : ICrossModel<Dat, Data.Models.Metadata.MetadataFile>
public partial class OfflineList : BaseMetadataSerializer<Dat>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Dat? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Dat? item)
{
if (item == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.OpenMSX;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class OpenMSX : ICrossModel<SoftwareDb, Data.Models.Metadata.MetadataFile>
public partial class OpenMSX : BaseMetadataSerializer<SoftwareDb>
{
/// <inheritdoc/>
public SoftwareDb? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override SoftwareDb? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.OpenMSX;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class OpenMSX : ICrossModel<SoftwareDb, Data.Models.Metadata.MetadataFile>
public partial class OpenMSX : BaseMetadataSerializer<SoftwareDb>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(SoftwareDb? item)
public override Data.Models.Metadata.MetadataFile? Serialize(SoftwareDb? item)
{
if (item == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.RomCenter;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class RomCenter : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class RomCenter : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.RomCenter;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class RomCenter : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class RomCenter : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Models.SeparatedValue;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class SeparatedValue : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class SeparatedValue : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override MetadataFile? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.SeparatedValue;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class SeparatedValue : ICrossModel<MetadataFile, Data.Models.Metadata.MetadataFile>
public partial class SeparatedValue : BaseMetadataSerializer<MetadataFile>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.SoftwareList;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class SoftwareList : ICrossModel<Data.Models.SoftwareList.SoftwareList, Data.Models.Metadata.MetadataFile>
public partial class SoftwareList : BaseMetadataSerializer<Data.Models.SoftwareList.SoftwareList>
{
/// <inheritdoc/>
public Data.Models.SoftwareList.SoftwareList? Deserialize(Data.Models.Metadata.MetadataFile? obj)
public override Data.Models.SoftwareList.SoftwareList? Deserialize(Data.Models.Metadata.MetadataFile? obj)
{
if (obj == null)
return null;

View File

@@ -1,13 +1,12 @@
using System;
using SabreTools.Data.Models.SoftwareList;
using SabreTools.Serialization.Interfaces;
namespace SabreTools.Serialization.CrossModel
{
public partial class SoftwareList : ICrossModel<Data.Models.SoftwareList.SoftwareList, Data.Models.Metadata.MetadataFile>
public partial class SoftwareList : BaseMetadataSerializer<Data.Models.SoftwareList.SoftwareList>
{
/// <inheritdoc/>
public Data.Models.Metadata.MetadataFile? Serialize(Data.Models.SoftwareList.SoftwareList? item)
public override Data.Models.Metadata.MetadataFile? Serialize(Data.Models.SoftwareList.SoftwareList? item)
{
if (item == null)
return null;