Convert ListXML writer to serializer, fix cloning bugs

This commit is contained in:
Matt Nadareski
2024-03-12 13:00:34 -04:00
parent 912c2c62a9
commit 82539f9a8f
4 changed files with 17 additions and 755 deletions

View File

@@ -1,5 +1,7 @@
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
@@ -858,8 +860,12 @@ namespace SabreTools.DatItems
/// <returns>Clone of the DatItem</returns>
public override object Clone()
{
var clone = Activator.CreateInstance<DatItem<T>>();
clone._internal = _internal?.Clone() as T ?? Activator.CreateInstance<T>();
var concrete = Assembly.GetExecutingAssembly()
.GetTypes()
.FirstOrDefault(t => !t.IsAbstract && t.IsClass && t.BaseType == typeof(DatItem<T>));
var clone = Activator.CreateInstance(concrete!);
(clone as DatItem<T>)!._internal = _internal?.Clone() as T ?? Activator.CreateInstance<T>();
return clone;
}