Streamline metadata cloning

This commit is contained in:
Matt Nadareski
2026-04-04 13:11:10 -04:00
parent ba371d971d
commit 9c1d2e7b9c
44 changed files with 182 additions and 96 deletions

View File

@@ -35,6 +35,12 @@ namespace SabreTools.Metadata.DatItems.Test
_internal = _internal.DeepClone() as TestDatItemModel ?? []
};
/// <inheritdoc/>
public override TestDatItemModel GetInternalClone()
{
return _internal.DeepClone() as TestDatItemModel ?? [];
}
/// <inheritdoc/>
public override string? GetName() => _nameKey is not null ? _internal.ReadString(_nameKey) : null;

View File

@@ -1,5 +1,4 @@
using System;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems
{
@@ -38,7 +37,7 @@ namespace SabreTools.Metadata.DatItems
/// <summary>
/// Get a clone of the current internal model
/// </summary>
public virtual T GetInternalClone() => (_internal.DeepClone() as T)!;
public abstract T GetInternalClone();
#endregion

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -67,12 +66,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Adjuster(_internal.DeepClone() as Data.Models.Metadata.Adjuster ?? []);
public override object Clone() => new Adjuster(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Adjuster GetInternalClone()
{
var adjusterItem = base.GetInternalClone();
var adjusterItem = (_internal as Data.Models.Metadata.Adjuster)?.Clone() as Data.Models.Metadata.Adjuster ?? [];
if (Condition is not null)
adjusterItem.Condition = Condition.GetInternalClone();

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Analog(_internal.DeepClone() as Data.Models.Metadata.Analog ?? []);
public override object Clone() => new Analog(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Analog GetInternalClone()
=> (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -242,7 +241,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Archive(_internal.DeepClone() as Data.Models.Metadata.Archive ?? []);
public override object Clone() => new Archive(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Archive GetInternalClone()
=> (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new BiosSet(_internal.DeepClone() as Data.Models.Metadata.BiosSet ?? []);
public override object Clone() => new BiosSet(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.BiosSet GetInternalClone()
=> (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -45,7 +44,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Blank(_internal.DeepClone() as Data.Models.Metadata.Blank ?? []);
public override object Clone() => new Blank(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Blank GetInternalClone()
=> (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -81,7 +80,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Chip(_internal.DeepClone() as Data.Models.Metadata.Chip ?? []);
public override object Clone() => new Chip(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Chip GetInternalClone()
=> (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -69,7 +68,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Condition(_internal.DeepClone() as Data.Models.Metadata.Condition ?? []);
public override object Clone() => new Condition(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Condition GetInternalClone()
=> (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new ConfLocation(_internal.DeepClone() as Data.Models.Metadata.ConfLocation ?? []);
public override object Clone() => new ConfLocation(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.ConfLocation GetInternalClone()
=> (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -73,12 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new ConfSetting(_internal.DeepClone() as Data.Models.Metadata.ConfSetting ?? []);
public override object Clone() => new ConfSetting(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.ConfSetting GetInternalClone()
{
var confSettingItem = base.GetInternalClone();
var confSettingItem = (_internal as Data.Models.Metadata.ConfSetting)?.Clone() as Data.Models.Metadata.ConfSetting ?? [];
if (Condition is not null)
confSettingItem.Condition = Condition.GetInternalClone();

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -90,12 +89,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Configuration(_internal.DeepClone() as Data.Models.Metadata.Configuration ?? []);
public override object Clone() => new Configuration(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Configuration GetInternalClone()
{
var configurationItem = base.GetInternalClone();
var configurationItem = (_internal as Data.Models.Metadata.Configuration)?.Clone() as Data.Models.Metadata.Configuration ?? [];
if (Condition is not null)
configurationItem.Condition = Condition.GetInternalClone();

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -117,7 +116,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Control(_internal.DeepClone() as Data.Models.Metadata.Control ?? []);
public override object Clone() => new Control(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Control GetInternalClone()
=> (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? [];
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -81,11 +80,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DataArea(_internal.DeepClone() as Data.Models.Metadata.DataArea ?? []);
public override object Clone() => new DataArea(GetInternalClone());
public override Data.Models.Metadata.DataArea GetInternalClone()
{
var partItem = base.GetInternalClone();
var partItem = (_internal as Data.Models.Metadata.DataArea)?.Clone() as Data.Models.Metadata.DataArea ?? [];
if (Rom is not null)
partItem.Rom = Array.ConvertAll(Rom, rom => rom.GetInternalClone());

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -94,12 +93,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Device(_internal.DeepClone() as Data.Models.Metadata.Device ?? []);
public override object Clone() => new Device(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Device GetInternalClone()
{
var deviceItem = base.GetInternalClone();
var deviceItem = (_internal as Data.Models.Metadata.Device)?.Clone() as Data.Models.Metadata.Device ?? [];
deviceItem.DeviceType = DeviceType;
deviceItem.FixedImage = FixedImage;

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DeviceRef(_internal.DeepClone() as Data.Models.Metadata.DeviceRef ?? []);
public override object Clone() => new DeviceRef(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.DeviceRef GetInternalClone()
=> (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DipLocation(_internal.DeepClone() as Data.Models.Metadata.DipLocation ?? []);
public override object Clone() => new DipLocation(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.DipLocation GetInternalClone()
=> (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? [];
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -117,12 +116,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DipSwitch(_internal.DeepClone() as Data.Models.Metadata.DipSwitch ?? []);
public override object Clone() => new DipSwitch(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.DipSwitch GetInternalClone()
{
var dipSwitchItem = base.GetInternalClone();
var dipSwitchItem = (_internal as Data.Models.Metadata.DipSwitch)?.Clone() as Data.Models.Metadata.DipSwitch ?? [];
if (Condition is not null)
dipSwitchItem.Condition = Condition.GetInternalClone();

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -73,12 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DipValue(_internal.DeepClone() as Data.Models.Metadata.DipValue ?? []);
public override object Clone() => new DipValue(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.DipValue GetInternalClone()
{
var dipValueItem = base.GetInternalClone();
var dipValueItem = (_internal as Data.Models.Metadata.DipValue)?.Clone() as Data.Models.Metadata.DipValue ?? [];
if (Condition is not null)
dipValueItem.Condition = Condition.GetInternalClone();

View File

@@ -139,7 +139,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Disk(_internal.DeepClone() as Data.Models.Metadata.Disk ?? []);
public override object Clone() => new Disk(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Disk GetInternalClone()
=> (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? [];
/// <summary>
/// Convert a disk to the closest Rom approximation

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,11 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new DiskArea(_internal.DeepClone() as Data.Models.Metadata.DiskArea ?? []);
public override object Clone() => new DiskArea(GetInternalClone());
public override Data.Models.Metadata.DiskArea GetInternalClone()
{
var partItem = base.GetInternalClone();
var partItem = (_internal as Data.Models.Metadata.DiskArea)?.Clone() as Data.Models.Metadata.DiskArea ?? [];
if (Disk is not null)
partItem.Disk = Array.ConvertAll(Disk, rom => rom.GetInternalClone());

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -158,7 +157,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Display(_internal.DeepClone() as Data.Models.Metadata.Display ?? []);
public override object Clone() => new Display(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Display GetInternalClone()
=> (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -117,7 +116,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Driver(_internal.DeepClone() as Data.Models.Metadata.Driver ?? []);
public override object Clone() => new Driver(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Driver GetInternalClone()
=> (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Extension(_internal.DeepClone() as Data.Models.Metadata.Extension ?? []);
public override object Clone() => new Extension(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Extension GetInternalClone()
=> (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -75,7 +74,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Feature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []);
public override object Clone() => new Feature(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Feature GetInternalClone()
=> (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Info(_internal.DeepClone() as Data.Models.Metadata.Info ?? []);
public override object Clone() => new Info(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Info GetInternalClone()
=> (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? [];
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -92,12 +91,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Input(_internal.DeepClone() as Data.Models.Metadata.Input ?? []);
public override object Clone() => new Input(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Input GetInternalClone()
{
var inputItem = base.GetInternalClone();
var inputItem = (_internal as Data.Models.Metadata.Input)?.Clone() as Data.Models.Metadata.Input ?? [];
if (Control is not null)
inputItem.Control = Array.ConvertAll(Control, control => control.GetInternalClone());

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Instance(_internal.DeepClone() as Data.Models.Metadata.Instance ?? []);
public override object Clone() => new Instance(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Instance GetInternalClone()
=> (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? [];
#endregion
}

View File

@@ -92,7 +92,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Media(_internal.DeepClone() as Data.Models.Metadata.Media ?? []);
public override object Clone() => new Media(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Media GetInternalClone()
=> (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? [];
/// <summary>
/// Convert a media to the closest Rom approximation

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -93,12 +92,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Part(_internal.DeepClone() as Data.Models.Metadata.Part ?? []);
public override object Clone() => new Part(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Part GetInternalClone()
{
var partItem = base.GetInternalClone();
var partItem = (_internal as Data.Models.Metadata.Part)?.Clone() as Data.Models.Metadata.Part ?? [];
if (DataArea is not null)
partItem.DataArea = Array.ConvertAll(DataArea, dataArea => dataArea.GetInternalClone());

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -80,7 +79,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new PartFeature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []);
public override object Clone() => new PartFeature(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Feature GetInternalClone()
=> (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? [];
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -62,12 +61,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Port(_internal.DeepClone() as Data.Models.Metadata.Port ?? []);
public override object Clone() => new Port(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Port GetInternalClone()
{
var portItem = base.GetInternalClone();
var portItem = (_internal as Data.Models.Metadata.Port)?.Clone() as Data.Models.Metadata.Port ?? [];
if (Analog is not null)
portItem.Analog = Array.ConvertAll(Analog, analog => analog.GetInternalClone());

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new RamOption(_internal.DeepClone() as Data.Models.Metadata.RamOption ?? []);
public override object Clone() => new RamOption(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.RamOption GetInternalClone()
=> (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -75,7 +74,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Release(_internal.DeepClone() as Data.Models.Metadata.Release ?? []);
public override object Clone() => new Release(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Release GetInternalClone()
=> (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -140,7 +139,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new ReleaseDetails(_internal.DeepClone() as Data.Models.Metadata.ReleaseDetails ?? []);
public override object Clone() => new ReleaseDetails(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.ReleaseDetails GetInternalClone()
=> (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? [];
#endregion
}

View File

@@ -402,7 +402,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Rom(_internal.DeepClone() as Data.Models.Metadata.Rom ?? []);
public override object Clone() => new Rom(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Rom GetInternalClone()
=> (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? [];
#endregion

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Sample(_internal.DeepClone() as Data.Models.Metadata.Sample ?? []);
public override object Clone() => new Sample(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Sample GetInternalClone()
=> (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -129,7 +128,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Serials(_internal.DeepClone() as Data.Models.Metadata.Serials ?? []);
public override object Clone() => new Serials(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Serials GetInternalClone()
=> (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -57,7 +56,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new SharedFeat(_internal.DeepClone() as Data.Models.Metadata.SharedFeat ?? []);
public override object Clone() => new SharedFeat(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.SharedFeat GetInternalClone()
=> (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? [];
#endregion
}

View File

@@ -1,7 +1,6 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -62,12 +61,12 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Slot(_internal.DeepClone() as Data.Models.Metadata.Slot ?? []);
public override object Clone() => new Slot(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Slot GetInternalClone()
{
var slotItem = base.GetInternalClone();
var slotItem = (_internal as Data.Models.Metadata.Slot)?.Clone() as Data.Models.Metadata.Slot ?? [];
if (SlotOption is not null)
slotItem.SlotOption = Array.ConvertAll(SlotOption, slotOption => slotOption.GetInternalClone());

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -63,7 +62,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new SlotOption(_internal.DeepClone() as Data.Models.Metadata.SlotOption ?? []);
public override object Clone() => new SlotOption(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.SlotOption GetInternalClone()
=> (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -69,7 +68,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []);
public override object Clone() => new SoftwareList(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.SoftwareList GetInternalClone()
=> (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -51,7 +50,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new Sound(_internal.DeepClone() as Data.Models.Metadata.Sound ?? []);
public override object Clone() => new Sound(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.Sound GetInternalClone()
=> (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? [];
#endregion
}

View File

@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -189,7 +188,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
/// <inheritdoc/>
public override object Clone() => new SourceDetails(_internal.DeepClone() as Data.Models.Metadata.SourceDetails ?? []);
public override object Clone() => new SourceDetails(GetInternalClone());
/// <inheritdoc/>
public override Data.Models.Metadata.SourceDetails GetInternalClone()
=> (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? [];
#endregion
}