diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
index 09b7331b..68b5c664 100644
--- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
@@ -28,6 +28,12 @@ namespace SabreTools.Metadata.DatItems.Test
public TestDatItem(string? nameKey) => _nameKey = nameKey;
+ ///
+ public override object Clone() => new TestDatItem()
+ {
+ _internal = _internal.Clone() 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 fbc0e596..c24b7094 100644
--- a/SabreTools.Metadata.DatItems/DatItemT.cs
+++ b/SabreTools.Metadata.DatItems/DatItemT.cs
@@ -1,12 +1,11 @@
using System;
-using System.Reflection;
namespace SabreTools.Metadata.DatItems
{
///
/// Base class for all items included in a set that are backed by an internal model
///
- public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Data.Models.Metadata.DatItem
+ public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Data.Models.Metadata.DatItem, new()
{
#region Constructors
@@ -15,7 +14,7 @@ namespace SabreTools.Metadata.DatItems
///
public DatItem()
{
- _internal = Activator.CreateInstance();
+ _internal = new T();
SetName(string.Empty);
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
@@ -37,24 +36,6 @@ namespace SabreTools.Metadata.DatItems
#region Cloning Methods
- ///
- /// Clone the DatItem
- ///
- /// Clone of the DatItem
- ///
- /// Throws an exception if there is a DatItem implementation
- /// that is not a part of this library.
- ///
- public override object Clone()
- {
- var concrete = Array.Find(Assembly.GetExecutingAssembly().GetTypes(),
- t => !t.IsAbstract && t.IsClass && t.BaseType == typeof(DatItem));
-
- var clone = Activator.CreateInstance(concrete!);
- (clone as DatItem)!._internal = _internal?.Clone() as T ?? Activator.CreateInstance();
- return clone;
- }
-
///
/// Get a clone of the current internal model
///
diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
index de12d320..6112a014 100644
--- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
@@ -53,6 +53,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Adjuster(_internal.Clone() as Data.Models.Metadata.Adjuster ?? []);
+
///
public override Data.Models.Metadata.Adjuster GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs
index fd1ee3fa..610dc644 100644
--- a/SabreTools.Metadata.DatItems/Formats/Analog.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Analog(_internal.Clone() as Data.Models.Metadata.Analog ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs
index df1c1321..ba2bed03 100644
--- a/SabreTools.Metadata.DatItems/Formats/Archive.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs
@@ -96,5 +96,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Archive(_internal.Clone() as Data.Models.Metadata.Archive ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
index 429745f3..cb92be6b 100644
--- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
+++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new BiosSet(_internal.Clone() as Data.Models.Metadata.BiosSet ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs
index 5fcddf7f..18df99e3 100644
--- a/SabreTools.Metadata.DatItems/Formats/Chip.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs
@@ -40,5 +40,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Chip(_internal.Clone() as Data.Models.Metadata.Chip ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs
index 81c93c97..9d0011bf 100644
--- a/SabreTools.Metadata.DatItems/Formats/Condition.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs
@@ -36,5 +36,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Condition(_internal.Clone() as Data.Models.Metadata.Condition ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
index 610a52ec..71e0e90c 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new ConfLocation(_internal.Clone() as Data.Models.Metadata.ConfLocation ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
index 6768a728..2bf6ee52 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
@@ -53,6 +53,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new ConfSetting(_internal.Clone() as Data.Models.Metadata.ConfSetting ?? []);
+
///
public override Data.Models.Metadata.ConfSetting GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
index 9d9e9741..aa1e34e7 100644
--- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
@@ -83,6 +83,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Configuration(_internal.Clone() as Data.Models.Metadata.Configuration ?? []);
+
///
public override Data.Models.Metadata.Configuration GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs
index bdc8adce..ca837969 100644
--- a/SabreTools.Metadata.DatItems/Formats/Control.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Control.cs
@@ -68,5 +68,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Control(_internal.Clone() as Data.Models.Metadata.Control ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
index 32a6d55e..f436a9db 100644
--- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs
@@ -45,5 +45,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new DataArea(_internal.Clone() as Data.Models.Metadata.DataArea ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs
index 64884aea..80c8e92e 100644
--- a/SabreTools.Metadata.DatItems/Formats/Device.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Device.cs
@@ -76,6 +76,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Device(_internal.Clone() as Data.Models.Metadata.Device ?? []);
+
///
public override Data.Models.Metadata.Device GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
index 071dd5be..656ffd97 100644
--- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new DeviceRef(_internal.Clone() as Data.Models.Metadata.DeviceRef ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
index 5ef31dc9..da5beb4d 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new DipLocation(_internal.Clone() as Data.Models.Metadata.DipLocation ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
index dc7e36e9..71f0e90a 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
@@ -109,6 +109,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new DipSwitch(_internal.Clone() as Data.Models.Metadata.DipSwitch ?? []);
+
///
public override Data.Models.Metadata.DipSwitch GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
index b1495ab4..86b2df6e 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
@@ -53,6 +53,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new DipValue(_internal.Clone() as Data.Models.Metadata.DipValue ?? []);
+
///
public override Data.Models.Metadata.DipValue GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs
index 44f4400a..fe9e3243 100644
--- a/SabreTools.Metadata.DatItems/Formats/Disk.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs
@@ -100,6 +100,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Disk(_internal.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 f93f5b84..ba8679eb 100644
--- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
@@ -30,5 +30,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new DiskArea(_internal.Clone() as Data.Models.Metadata.DiskArea ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs
index df36e334..8b8b836e 100644
--- a/SabreTools.Metadata.DatItems/Formats/Display.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Display.cs
@@ -140,5 +140,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Display(_internal.Clone() as Data.Models.Metadata.Display ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs
index fb4695fe..47a01f39 100644
--- a/SabreTools.Metadata.DatItems/Formats/Driver.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs
@@ -76,5 +76,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Driver(_internal.Clone() as Data.Models.Metadata.Driver ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs
index a1568d27..a5954714 100644
--- a/SabreTools.Metadata.DatItems/Formats/Extension.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Extension(_internal.Clone() as Data.Models.Metadata.Extension ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs
index 5ca812ee..34defc68 100644
--- a/SabreTools.Metadata.DatItems/Formats/Feature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs
@@ -44,5 +44,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Feature(_internal.Clone() as Data.Models.Metadata.Feature ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs
index 26513be4..29cd1c44 100644
--- a/SabreTools.Metadata.DatItems/Formats/Info.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Info.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Info(_internal.Clone() as Data.Models.Metadata.Info ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs
index ed29ab64..2517eef2 100644
--- a/SabreTools.Metadata.DatItems/Formats/Input.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Input.cs
@@ -73,6 +73,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Input(_internal.Clone() as Data.Models.Metadata.Input ?? []);
+
///
public override Data.Models.Metadata.Input GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs
index 0de20bf4..2f5892da 100644
--- a/SabreTools.Metadata.DatItems/Formats/Instance.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Instance(_internal.Clone() as Data.Models.Metadata.Instance ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs
index 69154cbf..7ab8144d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Media.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Media.cs
@@ -53,6 +53,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Media(_internal.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 a6b409e7..b5dd61c3 100644
--- a/SabreTools.Metadata.DatItems/Formats/Part.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Part.cs
@@ -40,5 +40,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Part(_internal.Clone() as Data.Models.Metadata.Part ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
index 945f2f7c..ae4ff5ba 100644
--- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
+++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs
@@ -53,5 +53,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new PartFeature(_internal.Clone() as Data.Models.Metadata.Feature ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs
index c809ed4c..168c5f55 100644
--- a/SabreTools.Metadata.DatItems/Formats/Port.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Port.cs
@@ -52,6 +52,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Port(_internal.Clone() as Data.Models.Metadata.Port ?? []);
+
///
public override Data.Models.Metadata.Port GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
index dca4d71d..6c90c80b 100644
--- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new RamOption(_internal.Clone() as Data.Models.Metadata.RamOption ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs
index c0da36c5..5a50584a 100644
--- a/SabreTools.Metadata.DatItems/Formats/Release.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Release.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Release(_internal.Clone() as Data.Models.Metadata.Release ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs
index 246b0657..f7b20fa0 100644
--- a/SabreTools.Metadata.DatItems/Formats/Rom.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs
@@ -374,6 +374,13 @@ namespace SabreTools.Metadata.DatItems.Formats
#endregion
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Rom(_internal.Clone() as Data.Models.Metadata.Rom ?? []);
+
+ #endregion
+
#region Comparision Methods
///
diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs
index 9cb1e7a5..2fe98f31 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sample.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Sample(_internal.Clone() as Data.Models.Metadata.Sample ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
index a978d966..e7bf6d93 100644
--- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
@@ -29,5 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new SharedFeat(_internal.Clone() as Data.Models.Metadata.SharedFeat ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs
index c363baeb..d666df9b 100644
--- a/SabreTools.Metadata.DatItems/Formats/Slot.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs
@@ -52,6 +52,9 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Cloning Methods
+ ///
+ public override object Clone() => new Slot(_internal.Clone() as Data.Models.Metadata.Slot ?? []);
+
///
public override Data.Models.Metadata.Slot GetInternalClone()
{
diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
index c8aa219c..f36080b1 100644
--- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new SlotOption(_internal.Clone() as Data.Models.Metadata.SlotOption ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
index e9d67a9e..ddf1ab95 100644
--- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
@@ -39,5 +39,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new SoftwareList(_internal.Clone() as Data.Models.Metadata.SoftwareList ?? []);
+
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs
index b1ffa6d8..85649293 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sound.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs
@@ -35,5 +35,12 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
+
+ #region Cloning Methods
+
+ ///
+ public override object Clone() => new Sound(_internal.Clone() as Data.Models.Metadata.Sound ?? []);
+
+ #endregion
}
}