diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
index 58969f46..32028d39 100644
--- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
@@ -35,6 +35,12 @@ namespace SabreTools.Metadata.DatItems.Test
_internal = _internal.DeepClone() as TestDatItemModel ?? []
};
+ ///
+ public override TestDatItemModel GetInternalClone()
+ {
+ return _internal.DeepClone() as TestDatItemModel ?? [];
+ }
+
///
public override string? GetName() => _nameKey is not null ? _internal.ReadString(_nameKey) : null;
diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs
index fb4eeefa..758a02d4 100644
--- a/SabreTools.Metadata.DatItems/DatItemT.cs
+++ b/SabreTools.Metadata.DatItems/DatItemT.cs
@@ -1,5 +1,4 @@
using System;
-using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems
{
@@ -38,7 +37,7 @@ namespace SabreTools.Metadata.DatItems
///
/// Get a clone of the current internal model
///
- public virtual T GetInternalClone() => (_internal.DeepClone() as T)!;
+ public abstract T GetInternalClone();
#endregion
diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
index 26200da3..60b1d536 100644
--- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
@@ -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
///
- public override object Clone() => new Adjuster(_internal.DeepClone() as Data.Models.Metadata.Adjuster ?? []);
+ public override object Clone() => new Adjuster(GetInternalClone());
///
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();
diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs
index 15828727..fe068969 100644
--- a/SabreTools.Metadata.DatItems/Formats/Analog.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs
@@ -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
///
- public override object Clone() => new Analog(_internal.DeepClone() as Data.Models.Metadata.Analog ?? []);
+ public override object Clone() => new Analog(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Analog GetInternalClone()
+ => (_internal as Data.Models.Metadata.Analog)?.Clone() as Data.Models.Metadata.Analog ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs
index b1a32822..42ed0b54 100644
--- a/SabreTools.Metadata.DatItems/Formats/Archive.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs
@@ -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
///
- public override object Clone() => new Archive(_internal.DeepClone() as Data.Models.Metadata.Archive ?? []);
+ public override object Clone() => new Archive(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Archive GetInternalClone()
+ => (_internal as Data.Models.Metadata.Archive)?.Clone() as Data.Models.Metadata.Archive ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
index 6186aabc..9cad0fe2 100644
--- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
+++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
@@ -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
///
- public override object Clone() => new BiosSet(_internal.DeepClone() as Data.Models.Metadata.BiosSet ?? []);
+ public override object Clone() => new BiosSet(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.BiosSet GetInternalClone()
+ => (_internal as Data.Models.Metadata.BiosSet)?.Clone() as Data.Models.Metadata.BiosSet ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs
index ff1254f3..b31e26f1 100644
--- a/SabreTools.Metadata.DatItems/Formats/Blank.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs
@@ -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
///
- public override object Clone() => new Blank(_internal.DeepClone() as Data.Models.Metadata.Blank ?? []);
+ public override object Clone() => new Blank(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Blank GetInternalClone()
+ => (_internal as Data.Models.Metadata.Blank)?.Clone() as Data.Models.Metadata.Blank ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs
index addc3037..ac0b6f8f 100644
--- a/SabreTools.Metadata.DatItems/Formats/Chip.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs
@@ -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
///
- public override object Clone() => new Chip(_internal.DeepClone() as Data.Models.Metadata.Chip ?? []);
+ public override object Clone() => new Chip(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Chip GetInternalClone()
+ => (_internal as Data.Models.Metadata.Chip)?.Clone() as Data.Models.Metadata.Chip ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs
index 83b850ef..0621276d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Condition.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs
@@ -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
///
- public override object Clone() => new Condition(_internal.DeepClone() as Data.Models.Metadata.Condition ?? []);
+ public override object Clone() => new Condition(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Condition GetInternalClone()
+ => (_internal as Data.Models.Metadata.Condition)?.Clone() as Data.Models.Metadata.Condition ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
index 06068274..cd5ce116 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
@@ -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
///
- public override object Clone() => new ConfLocation(_internal.DeepClone() as Data.Models.Metadata.ConfLocation ?? []);
+ public override object Clone() => new ConfLocation(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.ConfLocation GetInternalClone()
+ => (_internal as Data.Models.Metadata.ConfLocation)?.Clone() as Data.Models.Metadata.ConfLocation ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
index ef585006..6af0334c 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
@@ -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
///
- public override object Clone() => new ConfSetting(_internal.DeepClone() as Data.Models.Metadata.ConfSetting ?? []);
+ public override object Clone() => new ConfSetting(GetInternalClone());
///
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();
diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
index b6907dbd..2a96bdb1 100644
--- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
@@ -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
///
- public override object Clone() => new Configuration(_internal.DeepClone() as Data.Models.Metadata.Configuration ?? []);
+ public override object Clone() => new Configuration(GetInternalClone());
///
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();
diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs
index 4eebafc5..aaa21346 100644
--- a/SabreTools.Metadata.DatItems/Formats/Control.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Control.cs
@@ -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
///
- public override object Clone() => new Control(_internal.DeepClone() as Data.Models.Metadata.Control ?? []);
+ public override object Clone() => new Control(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Control GetInternalClone()
+ => (_internal as Data.Models.Metadata.Control)?.Clone() as Data.Models.Metadata.Control ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
index e37ced8e..5d1c4525 100644
--- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
@@ -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
///
- 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());
diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs
index 4f79c740..600965fa 100644
--- a/SabreTools.Metadata.DatItems/Formats/Device.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Device.cs
@@ -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
///
- public override object Clone() => new Device(_internal.DeepClone() as Data.Models.Metadata.Device ?? []);
+ public override object Clone() => new Device(GetInternalClone());
///
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;
diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
index 24da2765..7c16f71a 100644
--- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
@@ -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
///
- public override object Clone() => new DeviceRef(_internal.DeepClone() as Data.Models.Metadata.DeviceRef ?? []);
+ public override object Clone() => new DeviceRef(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.DeviceRef GetInternalClone()
+ => (_internal as Data.Models.Metadata.DeviceRef)?.Clone() as Data.Models.Metadata.DeviceRef ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
index 9ea4b4c4..2f0d6870 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
@@ -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
///
- public override object Clone() => new DipLocation(_internal.DeepClone() as Data.Models.Metadata.DipLocation ?? []);
+ public override object Clone() => new DipLocation(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.DipLocation GetInternalClone()
+ => (_internal as Data.Models.Metadata.DipLocation)?.Clone() as Data.Models.Metadata.DipLocation ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
index 72a398fa..1253d655 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
@@ -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
///
- public override object Clone() => new DipSwitch(_internal.DeepClone() as Data.Models.Metadata.DipSwitch ?? []);
+ public override object Clone() => new DipSwitch(GetInternalClone());
///
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();
diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
index 2c0a331b..48da33fb 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
@@ -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
///
- public override object Clone() => new DipValue(_internal.DeepClone() as Data.Models.Metadata.DipValue ?? []);
+ public override object Clone() => new DipValue(GetInternalClone());
///
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();
diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs
index 3816d277..4138aa40 100644
--- a/SabreTools.Metadata.DatItems/Formats/Disk.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs
@@ -139,7 +139,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
///
- public override object Clone() => new Disk(_internal.DeepClone() as Data.Models.Metadata.Disk ?? []);
+ public override object Clone() => new Disk(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Disk GetInternalClone()
+ => (_internal as Data.Models.Metadata.Disk)?.Clone() as Data.Models.Metadata.Disk ?? [];
///
/// Convert a disk to the closest Rom approximation
diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
index bfeffe2d..6c08ec64 100644
--- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
@@ -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
///
- 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());
diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs
index 7c849e5e..4077ff8d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Display.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Display.cs
@@ -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
///
- public override object Clone() => new Display(_internal.DeepClone() as Data.Models.Metadata.Display ?? []);
+ public override object Clone() => new Display(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Display GetInternalClone()
+ => (_internal as Data.Models.Metadata.Display)?.Clone() as Data.Models.Metadata.Display ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs
index ff5ff018..bc067f8b 100644
--- a/SabreTools.Metadata.DatItems/Formats/Driver.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs
@@ -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
///
- public override object Clone() => new Driver(_internal.DeepClone() as Data.Models.Metadata.Driver ?? []);
+ public override object Clone() => new Driver(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Driver GetInternalClone()
+ => (_internal as Data.Models.Metadata.Driver)?.Clone() as Data.Models.Metadata.Driver ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs
index 4762f4cc..6a734f5f 100644
--- a/SabreTools.Metadata.DatItems/Formats/Extension.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs
@@ -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
///
- public override object Clone() => new Extension(_internal.DeepClone() as Data.Models.Metadata.Extension ?? []);
+ public override object Clone() => new Extension(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Extension GetInternalClone()
+ => (_internal as Data.Models.Metadata.Extension)?.Clone() as Data.Models.Metadata.Extension ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs
index ad0d4913..dc70d747 100644
--- a/SabreTools.Metadata.DatItems/Formats/Feature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs
@@ -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
///
- public override object Clone() => new Feature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []);
+ public override object Clone() => new Feature(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Feature GetInternalClone()
+ => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs
index 9de391a2..7ee61a84 100644
--- a/SabreTools.Metadata.DatItems/Formats/Info.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Info.cs
@@ -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
///
- public override object Clone() => new Info(_internal.DeepClone() as Data.Models.Metadata.Info ?? []);
+ public override object Clone() => new Info(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Info GetInternalClone()
+ => (_internal as Data.Models.Metadata.Info)?.Clone() as Data.Models.Metadata.Info ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs
index 0e72bd20..d3ffe936 100644
--- a/SabreTools.Metadata.DatItems/Formats/Input.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Input.cs
@@ -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
///
- public override object Clone() => new Input(_internal.DeepClone() as Data.Models.Metadata.Input ?? []);
+ public override object Clone() => new Input(GetInternalClone());
///
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());
diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs
index 10467c95..7c4ddc50 100644
--- a/SabreTools.Metadata.DatItems/Formats/Instance.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs
@@ -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
///
- public override object Clone() => new Instance(_internal.DeepClone() as Data.Models.Metadata.Instance ?? []);
+ public override object Clone() => new Instance(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Instance GetInternalClone()
+ => (_internal as Data.Models.Metadata.Instance)?.Clone() as Data.Models.Metadata.Instance ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs
index a375cdcd..8046f74c 100644
--- a/SabreTools.Metadata.DatItems/Formats/Media.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Media.cs
@@ -92,7 +92,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
///
- public override object Clone() => new Media(_internal.DeepClone() as Data.Models.Metadata.Media ?? []);
+ public override object Clone() => new Media(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Media GetInternalClone()
+ => (_internal as Data.Models.Metadata.Media)?.Clone() as Data.Models.Metadata.Media ?? [];
///
/// Convert a media to the closest Rom approximation
diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs
index f2253d6a..13cae7ae 100644
--- a/SabreTools.Metadata.DatItems/Formats/Part.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Part.cs
@@ -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
///
- public override object Clone() => new Part(_internal.DeepClone() as Data.Models.Metadata.Part ?? []);
+ public override object Clone() => new Part(GetInternalClone());
///
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());
diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
index 10972be5..c074b544 100644
--- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
@@ -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
///
- public override object Clone() => new PartFeature(_internal.DeepClone() as Data.Models.Metadata.Feature ?? []);
+ public override object Clone() => new PartFeature(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Feature GetInternalClone()
+ => (_internal as Data.Models.Metadata.Feature)?.Clone() as Data.Models.Metadata.Feature ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs
index 4d67d41b..adfc986d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Port.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Port.cs
@@ -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
///
- public override object Clone() => new Port(_internal.DeepClone() as Data.Models.Metadata.Port ?? []);
+ public override object Clone() => new Port(GetInternalClone());
///
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());
diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
index b0360521..68f78055 100644
--- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
@@ -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
///
- public override object Clone() => new RamOption(_internal.DeepClone() as Data.Models.Metadata.RamOption ?? []);
+ public override object Clone() => new RamOption(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.RamOption GetInternalClone()
+ => (_internal as Data.Models.Metadata.RamOption)?.Clone() as Data.Models.Metadata.RamOption ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs
index faaa3207..a700380f 100644
--- a/SabreTools.Metadata.DatItems/Formats/Release.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Release.cs
@@ -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
///
- public override object Clone() => new Release(_internal.DeepClone() as Data.Models.Metadata.Release ?? []);
+ public override object Clone() => new Release(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Release GetInternalClone()
+ => (_internal as Data.Models.Metadata.Release)?.Clone() as Data.Models.Metadata.Release ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs
index 6668060b..ee887863 100644
--- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs
@@ -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
///
- public override object Clone() => new ReleaseDetails(_internal.DeepClone() as Data.Models.Metadata.ReleaseDetails ?? []);
+ public override object Clone() => new ReleaseDetails(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.ReleaseDetails GetInternalClone()
+ => (_internal as Data.Models.Metadata.ReleaseDetails)?.Clone() as Data.Models.Metadata.ReleaseDetails ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs
index beb4ed44..92bdc2f2 100644
--- a/SabreTools.Metadata.DatItems/Formats/Rom.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs
@@ -402,7 +402,11 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
///
- public override object Clone() => new Rom(_internal.DeepClone() as Data.Models.Metadata.Rom ?? []);
+ public override object Clone() => new Rom(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Rom GetInternalClone()
+ => (_internal as Data.Models.Metadata.Rom)?.Clone() as Data.Models.Metadata.Rom ?? [];
#endregion
diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs
index 45caa20d..d2b28deb 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sample.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs
@@ -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
///
- public override object Clone() => new Sample(_internal.DeepClone() as Data.Models.Metadata.Sample ?? []);
+ public override object Clone() => new Sample(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Sample GetInternalClone()
+ => (_internal as Data.Models.Metadata.Sample)?.Clone() as Data.Models.Metadata.Sample ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs
index 5660d157..c9fb8c6b 100644
--- a/SabreTools.Metadata.DatItems/Formats/Serials.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs
@@ -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
///
- public override object Clone() => new Serials(_internal.DeepClone() as Data.Models.Metadata.Serials ?? []);
+ public override object Clone() => new Serials(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Serials GetInternalClone()
+ => (_internal as Data.Models.Metadata.Serials)?.Clone() as Data.Models.Metadata.Serials ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
index 93e20006..7faff216 100644
--- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
@@ -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
///
- public override object Clone() => new SharedFeat(_internal.DeepClone() as Data.Models.Metadata.SharedFeat ?? []);
+ public override object Clone() => new SharedFeat(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.SharedFeat GetInternalClone()
+ => (_internal as Data.Models.Metadata.SharedFeat)?.Clone() as Data.Models.Metadata.SharedFeat ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs
index 80f1aa04..d331501e 100644
--- a/SabreTools.Metadata.DatItems/Formats/Slot.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs
@@ -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
///
- public override object Clone() => new Slot(_internal.DeepClone() as Data.Models.Metadata.Slot ?? []);
+ public override object Clone() => new Slot(GetInternalClone());
///
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());
diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
index 49a0b7c1..6a2a649e 100644
--- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
@@ -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
///
- public override object Clone() => new SlotOption(_internal.DeepClone() as Data.Models.Metadata.SlotOption ?? []);
+ public override object Clone() => new SlotOption(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.SlotOption GetInternalClone()
+ => (_internal as Data.Models.Metadata.SlotOption)?.Clone() as Data.Models.Metadata.SlotOption ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
index 7cb0a213..739dd847 100644
--- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
@@ -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
///
- public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []);
+ public override object Clone() => new SoftwareList(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.SoftwareList GetInternalClone()
+ => (_internal as Data.Models.Metadata.SoftwareList)?.Clone() as Data.Models.Metadata.SoftwareList ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs
index c3bdf427..f12e4d95 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sound.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs
@@ -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
///
- public override object Clone() => new Sound(_internal.DeepClone() as Data.Models.Metadata.Sound ?? []);
+ public override object Clone() => new Sound(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.Sound GetInternalClone()
+ => (_internal as Data.Models.Metadata.Sound)?.Clone() as Data.Models.Metadata.Sound ?? [];
#endregion
}
diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs
index 624c5b79..47300b8f 100644
--- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs
@@ -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
///
- public override object Clone() => new SourceDetails(_internal.DeepClone() as Data.Models.Metadata.SourceDetails ?? []);
+ public override object Clone() => new SourceDetails(GetInternalClone());
+
+ ///
+ public override Data.Models.Metadata.SourceDetails GetInternalClone()
+ => (_internal as Data.Models.Metadata.SourceDetails)?.Clone() as Data.Models.Metadata.SourceDetails ?? [];
#endregion
}