diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs
index 04a6ad1c..fae89cd8 100644
--- a/SabreTools.DatFiles/DatFile.cs
+++ b/SabreTools.DatFiles/DatFile.cs
@@ -811,11 +811,9 @@ namespace SabreTools.DatFiles
{
_logger.Verbose($"Name duplicate found for '{datItemName}'");
- if (datItem is Disk || datItem is DatItems.Formats.File || datItem is Media || datItem is Rom)
- {
- datItemName += GetDuplicateSuffix(datItem);
- lastrenamed ??= datItemName;
- }
+ // Get the duplicate suffix
+ datItemName += datItem.GetDuplicateSuffix();
+ lastrenamed ??= datItemName;
// If we have a conflict with the last renamed item, do the right thing
if (datItemName == lastrenamed)
@@ -906,11 +904,9 @@ namespace SabreTools.DatFiles
{
_logger.Verbose($"Name duplicate found for '{datItemName}'");
- if (datItem.Value is Disk || datItem.Value is DatItems.Formats.File || datItem.Value is Media || datItem.Value is Rom)
- {
- datItemName += GetDuplicateSuffix(datItem.Value);
- lastrenamed ??= datItemName;
- }
+ // Get the duplicate suffix
+ datItemName += datItem.Value.GetDuplicateSuffix();
+ lastrenamed ??= datItemName;
// If we have a conflict with the last renamed item, do the right thing
if (datItemName == lastrenamed)
@@ -1017,21 +1013,6 @@ namespace SabreTools.DatFiles
return false;
}
- ///
- /// Get duplicate suffix based on the item type
- ///
- private static string GetDuplicateSuffix(DatItem datItem)
- {
- return datItem switch
- {
- Disk disk => disk.GetDuplicateSuffix(),
- DatItems.Formats.File file => file.GetDuplicateSuffix(),
- Media media => media.GetDuplicateSuffix(),
- Rom rom => rom.GetDuplicateSuffix(),
- _ => "_1",
- };
- }
-
#endregion
}
}
diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs
index e162a5c5..7b51cd1d 100644
--- a/SabreTools.DatItems/DatItem.cs
+++ b/SabreTools.DatItems/DatItem.cs
@@ -356,6 +356,12 @@ namespace SabreTools.DatItems
#region Sorting and Merging
+ ///
+ /// Get unique duplicate suffix on name collision
+ ///
+ /// String representing the suffix
+ public virtual string GetDuplicateSuffix() => _internal.GetDuplicateSuffix();
+
///
/// Get the dictionary key that should be used for a given item and bucketing type
///
diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs
index 8fc8cc37..e5eba765 100644
--- a/SabreTools.DatItems/Formats/Disk.cs
+++ b/SabreTools.DatItems/Formats/Disk.cs
@@ -114,12 +114,6 @@ namespace SabreTools.DatItems.Formats
public void FillMissingInformation(Disk other)
=> _internal.FillMissingHashes(other._internal);
- ///
- /// Get unique duplicate suffix on name collision
- ///
- /// String representing the suffix
- public string GetDuplicateSuffix() => _internal.GetDuplicateSuffix();
-
///
/// Returns if the Rom contains any hashes
///
diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs
index b4439ebd..8745432e 100644
--- a/SabreTools.DatItems/Formats/File.cs
+++ b/SabreTools.DatItems/Formats/File.cs
@@ -216,7 +216,7 @@ namespace SabreTools.DatItems.Formats
/// Get unique duplicate suffix on name collision
///
/// String representing the suffix
- public string GetDuplicateSuffix()
+ public override string GetDuplicateSuffix()
{
if (!_crc.IsNullOrEmpty())
return $"_{CRC}";
diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs
index 40ad17b7..39052b73 100644
--- a/SabreTools.DatItems/Formats/Media.cs
+++ b/SabreTools.DatItems/Formats/Media.cs
@@ -63,12 +63,6 @@ namespace SabreTools.DatItems.Formats
public void FillMissingInformation(Media other)
=> _internal.FillMissingHashes(other._internal);
- ///
- /// Get unique duplicate suffix on name collision
- ///
- /// String representing the suffix
- public string GetDuplicateSuffix() => _internal.GetDuplicateSuffix();
-
///
/// Returns if the Rom contains any hashes
///
diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs
index 46780532..2de1a990 100644
--- a/SabreTools.DatItems/Formats/Rom.cs
+++ b/SabreTools.DatItems/Formats/Rom.cs
@@ -105,12 +105,6 @@ namespace SabreTools.DatItems.Formats
public void FillMissingInformation(Rom other)
=> _internal.FillMissingHashes(other._internal);
- ///
- /// Get unique duplicate suffix on name collision
- ///
- /// String representing the suffix
- public string GetDuplicateSuffix() => _internal.GetDuplicateSuffix();
-
///
/// Returns if the Rom contains any hashes
///