diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index eb9d1d88..9e2017bf 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -703,6 +703,43 @@ namespace SabreTools.DatItems /// public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Models.Metadata.DatItem { + #region Fields + + /// + /// Item type for the object + /// + protected abstract ItemType ItemType { get; } + + #endregion + + #region Constructors + + /// + /// Create a default, empty object + /// + public DatItem() + { + _internal = Activator.CreateInstance(); + + SetName(string.Empty); + SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); + SetFieldValue(DatItem.MachineKey, new Machine()); + } + + /// + /// Create an object from the internal model + /// + public DatItem(T item) + { + _internal = item; + + SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); + SetFieldValue(DatItem.MachineKey, new Machine()); + } + + #endregion + + // TODO: Figure out how to replace individual versions with this #region Cloning Methods ///