diff --git a/SabreTools.Models/AttractMode/MetadataFile.cs b/SabreTools.Models/AttractMode/MetadataFile.cs index ec72fac2..b1b78a0d 100644 --- a/SabreTools.Models/AttractMode/MetadataFile.cs +++ b/SabreTools.Models/AttractMode/MetadataFile.cs @@ -5,7 +5,8 @@ namespace SabreTools.Models.AttractMode /// public class MetadataFile { - public string[] Header { get; set; } + [Required] + public string[]? Header { get; set; } public Row[]? Row { get; set; } } diff --git a/SabreTools.Models/AttractMode/Row.cs b/SabreTools.Models/AttractMode/Row.cs index bf8d300e..17fc57f3 100644 --- a/SabreTools.Models/AttractMode/Row.cs +++ b/SabreTools.Models/AttractMode/Row.cs @@ -3,7 +3,8 @@ namespace SabreTools.Models.AttractMode public class Row { /// Also called Romname - public string Name { get; set; } + [Required] + public string? Name { get; set; } public string? Title { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Archive.cs b/SabreTools.Models/ClrMamePro/Archive.cs index 498c7183..2cd03795 100644 --- a/SabreTools.Models/ClrMamePro/Archive.cs +++ b/SabreTools.Models/ClrMamePro/Archive.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Archive { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/ClrMamePro/BiosSet.cs b/SabreTools.Models/ClrMamePro/BiosSet.cs index fe1dfa86..54326691 100644 --- a/SabreTools.Models/ClrMamePro/BiosSet.cs +++ b/SabreTools.Models/ClrMamePro/BiosSet.cs @@ -4,10 +4,12 @@ namespace SabreTools.Models.ClrMamePro public class BiosSet { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// description - public string Description { get; set; } + [Required] + public string? Description { get; set; } /// default public string? Default { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Chip.cs b/SabreTools.Models/ClrMamePro/Chip.cs index f7d3a299..d542d568 100644 --- a/SabreTools.Models/ClrMamePro/Chip.cs +++ b/SabreTools.Models/ClrMamePro/Chip.cs @@ -4,10 +4,12 @@ namespace SabreTools.Models.ClrMamePro public class Chip { /// type, (cpu|audio) - public string Type { get; set; } + [Required] + public string? Type { get; set; } /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// flags public string? Flags { get; set; } diff --git a/SabreTools.Models/ClrMamePro/DipSwitch.cs b/SabreTools.Models/ClrMamePro/DipSwitch.cs index 46c5f09e..38708414 100644 --- a/SabreTools.Models/ClrMamePro/DipSwitch.cs +++ b/SabreTools.Models/ClrMamePro/DipSwitch.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class DipSwitch { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// entry public string[]? Entry { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Disk.cs b/SabreTools.Models/ClrMamePro/Disk.cs index 23407c37..0a84fa3f 100644 --- a/SabreTools.Models/ClrMamePro/Disk.cs +++ b/SabreTools.Models/ClrMamePro/Disk.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Disk { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// md5 public string? MD5 { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Driver.cs b/SabreTools.Models/ClrMamePro/Driver.cs index f84b3a78..f1656e57 100644 --- a/SabreTools.Models/ClrMamePro/Driver.cs +++ b/SabreTools.Models/ClrMamePro/Driver.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Driver { /// status, (good|imperfect|preliminary) - public string Status { get; set; } + [Required] + public string? Status { get; set; } /// color, (good|imperfect|preliminary) public string? Color { get; set; } diff --git a/SabreTools.Models/ClrMamePro/GameBase.cs b/SabreTools.Models/ClrMamePro/GameBase.cs index 1efbd9fb..ca234095 100644 --- a/SabreTools.Models/ClrMamePro/GameBase.cs +++ b/SabreTools.Models/ClrMamePro/GameBase.cs @@ -6,7 +6,8 @@ namespace SabreTools.Models.ClrMamePro public abstract class GameBase { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// description public string? Description { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Input.cs b/SabreTools.Models/ClrMamePro/Input.cs index 76c416bc..06da37b2 100644 --- a/SabreTools.Models/ClrMamePro/Input.cs +++ b/SabreTools.Models/ClrMamePro/Input.cs @@ -3,14 +3,16 @@ namespace SabreTools.Models.ClrMamePro /// input public class Input { - /// players, Numeric?/remarks> - public string Players { get; set; } + /// players, Numeric/remarks> + [Required] + public string? Players { get; set; } /// control public string? Control { get; set; } /// buttons, Numeric - public string Buttons { get; set; } + [Required] + public string? Buttons { get; set; } /// coins, Numeric public string? Coins { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Media.cs b/SabreTools.Models/ClrMamePro/Media.cs index 9a8d66d4..25f678aa 100644 --- a/SabreTools.Models/ClrMamePro/Media.cs +++ b/SabreTools.Models/ClrMamePro/Media.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Media { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// md5 public string? MD5 { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Release.cs b/SabreTools.Models/ClrMamePro/Release.cs index 69f73c20..1da26ca3 100644 --- a/SabreTools.Models/ClrMamePro/Release.cs +++ b/SabreTools.Models/ClrMamePro/Release.cs @@ -4,10 +4,12 @@ namespace SabreTools.Models.ClrMamePro public class Release { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// region - public string Region { get; set; } + [Required] + public string? Region { get; set; } /// language public string? Language { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Rom.cs b/SabreTools.Models/ClrMamePro/Rom.cs index 250da8c2..a98677ed 100644 --- a/SabreTools.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Models/ClrMamePro/Rom.cs @@ -4,10 +4,12 @@ namespace SabreTools.Models.ClrMamePro public class Rom { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// size, Numeric - public string Size { get; set; } + [Required] + public string? Size { get; set; } /// crc public string? CRC { get; set; } diff --git a/SabreTools.Models/ClrMamePro/Sample.cs b/SabreTools.Models/ClrMamePro/Sample.cs index bfada9d7..ab0b11c1 100644 --- a/SabreTools.Models/ClrMamePro/Sample.cs +++ b/SabreTools.Models/ClrMamePro/Sample.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Sample { /// name - public string Name { get; set; } + [Required] + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/ClrMamePro/Sound.cs b/SabreTools.Models/ClrMamePro/Sound.cs index 3c37f621..bfddee8b 100644 --- a/SabreTools.Models/ClrMamePro/Sound.cs +++ b/SabreTools.Models/ClrMamePro/Sound.cs @@ -4,7 +4,8 @@ namespace SabreTools.Models.ClrMamePro public class Sound { /// channels, Numeric? - public string Channels { get; set; } + [Required] + public string? Channels { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/ClrMamePro/Video.cs b/SabreTools.Models/ClrMamePro/Video.cs index d946bade..c7448aa8 100644 --- a/SabreTools.Models/ClrMamePro/Video.cs +++ b/SabreTools.Models/ClrMamePro/Video.cs @@ -4,10 +4,12 @@ namespace SabreTools.Models.ClrMamePro public class Video { /// screen, (raster|vector) - public string Screen { get; set; } + [Required] + public string? Screen { get; set; } /// orientation, (vertical|horizontal) - public string Orientation { get; set; } + [Required] + public string? Orientation { get; set; } /// x, Numeric? public string? X { get; set; } diff --git a/SabreTools.Models/DosCenter/File.cs b/SabreTools.Models/DosCenter/File.cs index 1ae126c1..eb663f45 100644 --- a/SabreTools.Models/DosCenter/File.cs +++ b/SabreTools.Models/DosCenter/File.cs @@ -4,13 +4,16 @@ namespace SabreTools.Models.DosCenter public class File { /// name, attribute - public string Name { get; set; } + [Required] + public string? Name { get; set; } /// size, attribute, numeric - public string Size { get; set; } + [Required] + public string? Size { get; set; } /// crc, attribute - public string CRC { get; set; } + [Required] + public string? CRC { get; set; } /// date, attribute public string? Date { get; set; } diff --git a/SabreTools.Models/DosCenter/Game.cs b/SabreTools.Models/DosCenter/Game.cs index 3f5b159a..8413155c 100644 --- a/SabreTools.Models/DosCenter/Game.cs +++ b/SabreTools.Models/DosCenter/Game.cs @@ -4,6 +4,7 @@ namespace SabreTools.Models.DosCenter public class Game { /// name + [Required] public string? Name { get; set; } /// file diff --git a/SabreTools.Models/EverdriveSMDB/Row.cs b/SabreTools.Models/EverdriveSMDB/Row.cs index fd89b184..648dbe4d 100644 --- a/SabreTools.Models/EverdriveSMDB/Row.cs +++ b/SabreTools.Models/EverdriveSMDB/Row.cs @@ -5,15 +5,20 @@ namespace SabreTools.Models.EverdriveSMDB /// public class Row { - public string SHA256 { get; set; } + [Required] + public string? SHA256 { get; set; } - public string Name { get; set; } + [Required] + public string? Name { get; set; } - public string SHA1 { get; set; } + [Required] + public string? SHA1 { get; set; } - public string MD5 { get; set; } + [Required] + public string? MD5 { get; set; } - public string CRC32 { get; set; } + [Required] + public string? CRC32 { get; set; } public string? Size { get; set; } diff --git a/SabreTools.Models/Hashfile/MD5.cs b/SabreTools.Models/Hashfile/MD5.cs index 45a8fa83..1156d18a 100644 --- a/SabreTools.Models/Hashfile/MD5.cs +++ b/SabreTools.Models/Hashfile/MD5.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class MD5 { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SFV.cs b/SabreTools.Models/Hashfile/SFV.cs index 50ec621e..8d4be7f2 100644 --- a/SabreTools.Models/Hashfile/SFV.cs +++ b/SabreTools.Models/Hashfile/SFV.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SFV { - public string File { get; set; } + [Required] + public string? File { get; set; } - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SHA1.cs b/SabreTools.Models/Hashfile/SHA1.cs index df7008a7..153afb3e 100644 --- a/SabreTools.Models/Hashfile/SHA1.cs +++ b/SabreTools.Models/Hashfile/SHA1.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SHA1 { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SHA256.cs b/SabreTools.Models/Hashfile/SHA256.cs index 1761443b..9b2c6d2a 100644 --- a/SabreTools.Models/Hashfile/SHA256.cs +++ b/SabreTools.Models/Hashfile/SHA256.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SHA256 { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SHA384.cs b/SabreTools.Models/Hashfile/SHA384.cs index ab393ecf..916aa710 100644 --- a/SabreTools.Models/Hashfile/SHA384.cs +++ b/SabreTools.Models/Hashfile/SHA384.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SHA384 { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SHA512.cs b/SabreTools.Models/Hashfile/SHA512.cs index bcd2055c..dec6abb7 100644 --- a/SabreTools.Models/Hashfile/SHA512.cs +++ b/SabreTools.Models/Hashfile/SHA512.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SHA512 { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/SpamSum.cs b/SabreTools.Models/Hashfile/SpamSum.cs index c3a9363e..82bb61ea 100644 --- a/SabreTools.Models/Hashfile/SpamSum.cs +++ b/SabreTools.Models/Hashfile/SpamSum.cs @@ -5,8 +5,10 @@ namespace SabreTools.Models.Hashfile /// public class SpamSum { - public string Hash { get; set; } + [Required] + public string? Hash { get; set; } - public string File { get; set; } + [Required] + public string? File { get; set; } } } \ No newline at end of file diff --git a/SabreTools.Models/Listrom/Row.cs b/SabreTools.Models/Listrom/Row.cs index f6a62f1a..4f3dce97 100644 --- a/SabreTools.Models/Listrom/Row.cs +++ b/SabreTools.Models/Listrom/Row.cs @@ -14,7 +14,8 @@ namespace SabreTools.Models.Listrom /// public class Row { - public string Name { get; set; } + [Required] + public string? Name { get; set; } public string? Size { get; set; } diff --git a/SabreTools.Models/Listxml/Adjuster.cs b/SabreTools.Models/Listxml/Adjuster.cs index 37970024..f5d6de1a 100644 --- a/SabreTools.Models/Listxml/Adjuster.cs +++ b/SabreTools.Models/Listxml/Adjuster.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("adjuster")] public class Adjuster { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Listxml/Analog.cs b/SabreTools.Models/Listxml/Analog.cs index 8f4a1baf..1effbaf5 100644 --- a/SabreTools.Models/Listxml/Analog.cs +++ b/SabreTools.Models/Listxml/Analog.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("analog")] public class Analog { + [Required] [XmlAttribute("mask")] - public string Mask { get; set; } + public string? Mask { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/BiosSet.cs b/SabreTools.Models/Listxml/BiosSet.cs index 2399b4d3..51dc9e3d 100644 --- a/SabreTools.Models/Listxml/BiosSet.cs +++ b/SabreTools.Models/Listxml/BiosSet.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("biosset")] public class BiosSet { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("description")] - public string Description { get; set; } + public string? Description { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Listxml/Chip.cs b/SabreTools.Models/Listxml/Chip.cs index 56cf0ee6..dc722b83 100644 --- a/SabreTools.Models/Listxml/Chip.cs +++ b/SabreTools.Models/Listxml/Chip.cs @@ -6,15 +6,17 @@ namespace SabreTools.Models.Listxml [XmlRoot("chip")] public class Chip { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("tag")] public string? Tag { get; set; } /// (cpu|audio) + [Required] [XmlAttribute("type")] - public string Type { get; set; } + public string? Type { get; set; } /// Only present in older versions [XmlAttribute("soundonly")] diff --git a/SabreTools.Models/Listxml/Condition.cs b/SabreTools.Models/Listxml/Condition.cs index 8746d61b..ddf02c66 100644 --- a/SabreTools.Models/Listxml/Condition.cs +++ b/SabreTools.Models/Listxml/Condition.cs @@ -6,18 +6,22 @@ namespace SabreTools.Models.Listxml [XmlRoot("condition")] public class Condition { + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } + [Required] [XmlAttribute("mask")] - public string Mask { get; set; } + public string? Mask { get; set; } /// (eq|ne|gt|le|lt|ge) + [Required] [XmlAttribute("relation")] - public string Relation { get; set; } + public string? Relation { get; set; } + [Required] [XmlAttribute("value")] - public string Value { get; set; } + public string? Value { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/ConfLocation.cs b/SabreTools.Models/Listxml/ConfLocation.cs index 087504b5..9199c715 100644 --- a/SabreTools.Models/Listxml/ConfLocation.cs +++ b/SabreTools.Models/Listxml/ConfLocation.cs @@ -6,12 +6,14 @@ namespace SabreTools.Models.Listxml [XmlRoot("conflocation")] public class ConfLocation { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// Numeric? + [Required] [XmlAttribute("number")] - public string Number { get; set; } + public string? Number { get; set; } /// (yes|no) "no" [XmlAttribute("inverted")] diff --git a/SabreTools.Models/Listxml/ConfSetting.cs b/SabreTools.Models/Listxml/ConfSetting.cs index 7a58348b..2d3d972d 100644 --- a/SabreTools.Models/Listxml/ConfSetting.cs +++ b/SabreTools.Models/Listxml/ConfSetting.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("confsetting")] public class ConfSetting { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("value")] - public string Value { get; set; } + public string? Value { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Listxml/Configuration.cs b/SabreTools.Models/Listxml/Configuration.cs index faeb7b1e..1871ad70 100644 --- a/SabreTools.Models/Listxml/Configuration.cs +++ b/SabreTools.Models/Listxml/Configuration.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("configuration")] public class Configuration { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } [XmlAttribute("mask")] public string? Mask { get; set; } diff --git a/SabreTools.Models/Listxml/Control.cs b/SabreTools.Models/Listxml/Control.cs index 86032b3a..c517de7c 100644 --- a/SabreTools.Models/Listxml/Control.cs +++ b/SabreTools.Models/Listxml/Control.cs @@ -7,8 +7,9 @@ namespace SabreTools.Models.Listxml public class Control { /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) + [Required] [XmlAttribute("type")] - public string Type { get; set; } + public string? Type { get; set; } /// Numeric [XmlAttribute("player")] diff --git a/SabreTools.Models/Listxml/Device.cs b/SabreTools.Models/Listxml/Device.cs index 139d8d36..ceb17d66 100644 --- a/SabreTools.Models/Listxml/Device.cs +++ b/SabreTools.Models/Listxml/Device.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("device")] public class Device { + [Required] [XmlAttribute("type")] - public string Type { get; set; } + public string? Type { get; set; } [XmlAttribute("tag")] public string? Tag { get; set; } diff --git a/SabreTools.Models/Listxml/DeviceRef.cs b/SabreTools.Models/Listxml/DeviceRef.cs index b43639b9..f9b5d8c6 100644 --- a/SabreTools.Models/Listxml/DeviceRef.cs +++ b/SabreTools.Models/Listxml/DeviceRef.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("device_ref")] public class DeviceRef { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/DipLocation.cs b/SabreTools.Models/Listxml/DipLocation.cs index dbdd4b10..adb628d3 100644 --- a/SabreTools.Models/Listxml/DipLocation.cs +++ b/SabreTools.Models/Listxml/DipLocation.cs @@ -6,12 +6,14 @@ namespace SabreTools.Models.Listxml [XmlRoot("diplocation")] public class DipLocation { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// Numeric? + [Required] [XmlAttribute("number")] - public string Number { get; set; } + public string? Number { get; set; } /// (yes|no) "no" [XmlAttribute("inverted")] diff --git a/SabreTools.Models/Listxml/DipSwitch.cs b/SabreTools.Models/Listxml/DipSwitch.cs index 1754258f..13ab0d96 100644 --- a/SabreTools.Models/Listxml/DipSwitch.cs +++ b/SabreTools.Models/Listxml/DipSwitch.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("dipswitch")] public class DipSwitch { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } [XmlAttribute("mask")] public string? Mask { get; set; } diff --git a/SabreTools.Models/Listxml/DipValue.cs b/SabreTools.Models/Listxml/DipValue.cs index fd6d8ce8..e48a9838 100644 --- a/SabreTools.Models/Listxml/DipValue.cs +++ b/SabreTools.Models/Listxml/DipValue.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("dipvalue")] public class DipValue { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("value")] - public string Value { get; set; } + public string? Value { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Listxml/Disk.cs b/SabreTools.Models/Listxml/Disk.cs index 5807ce5f..bd979a9b 100644 --- a/SabreTools.Models/Listxml/Disk.cs +++ b/SabreTools.Models/Listxml/Disk.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("disk")] public class Disk { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// Only present in older versions [XmlAttribute("md5")] diff --git a/SabreTools.Models/Listxml/Display.cs b/SabreTools.Models/Listxml/Display.cs index 0a4bed41..1763d7fe 100644 --- a/SabreTools.Models/Listxml/Display.cs +++ b/SabreTools.Models/Listxml/Display.cs @@ -10,8 +10,9 @@ namespace SabreTools.Models.Listxml public string? Tag { get; set; } /// (raster|vector|lcd|svg|unknown) + [Required] [XmlAttribute("type")] - public string Type { get; set; } + public string? Type { get; set; } /// (0|90|180|270) [XmlAttribute("rotate")] @@ -30,8 +31,9 @@ namespace SabreTools.Models.Listxml public string? Height { get; set; } /// Numeric + [Required] [XmlAttribute("refresh")] - public string Refresh { get; set; } + public string? Refresh { get; set; } /// Numeric [XmlAttribute("pixclock")] diff --git a/SabreTools.Models/Listxml/Driver.cs b/SabreTools.Models/Listxml/Driver.cs index 23ca06fe..e4480017 100644 --- a/SabreTools.Models/Listxml/Driver.cs +++ b/SabreTools.Models/Listxml/Driver.cs @@ -7,8 +7,9 @@ namespace SabreTools.Models.Listxml public class Driver { /// (good|imperfect|preliminary), (good|preliminary|test) in older versions + [Required] [XmlAttribute("status")] - public string Status { get; set; } + public string? Status { get; set; } /// (good|imperfect|preliminary), Only present in older versions [XmlAttribute("color")] @@ -23,16 +24,19 @@ namespace SabreTools.Models.Listxml public string? PaletteSize { get; set; } /// (good|imperfect|preliminary) + [Required] [XmlAttribute("emulation")] - public string Emulation { get; set; } + public string? Emulation { get; set; } /// (good|imperfect|preliminary) + [Required] [XmlAttribute("cocktail")] - public string Cocktail { get; set; } + public string? Cocktail { get; set; } /// (supported|unsupported) + [Required] [XmlAttribute("savestate")] - public string SaveState { get; set; } + public string? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Models/Listxml/Extension.cs b/SabreTools.Models/Listxml/Extension.cs index 4647e333..a73f4909 100644 --- a/SabreTools.Models/Listxml/Extension.cs +++ b/SabreTools.Models/Listxml/Extension.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("extension")] public class Extension { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/Feature.cs b/SabreTools.Models/Listxml/Feature.cs index ac85d181..9610218a 100644 --- a/SabreTools.Models/Listxml/Feature.cs +++ b/SabreTools.Models/Listxml/Feature.cs @@ -7,8 +7,9 @@ namespace SabreTools.Models.Listxml public class Feature { /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) + [Required] [XmlAttribute("type")] - public string Type { get; set; } + public string? Type { get; set; } /// (unemulated|imperfect) [XmlAttribute("status")] diff --git a/SabreTools.Models/Listxml/GameBase.cs b/SabreTools.Models/Listxml/GameBase.cs index 26507a91..cbb7444d 100644 --- a/SabreTools.Models/Listxml/GameBase.cs +++ b/SabreTools.Models/Listxml/GameBase.cs @@ -8,8 +8,9 @@ namespace SabreTools.Models.Listxml /// public abstract class GameBase { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// Machine only [XmlAttribute("sourcefile")] @@ -40,8 +41,9 @@ namespace SabreTools.Models.Listxml [XmlAttribute("sampleof")] public string? SampleOf { get; set; } + [Required] [XmlElement("description")] - public string Description { get; set; } + public string? Description { get; set; } [XmlElement("year")] public string? Year { get; set; } diff --git a/SabreTools.Models/Listxml/Input.cs b/SabreTools.Models/Listxml/Input.cs index a16f9cb0..26a76c11 100644 --- a/SabreTools.Models/Listxml/Input.cs +++ b/SabreTools.Models/Listxml/Input.cs @@ -15,8 +15,9 @@ namespace SabreTools.Models.Listxml public string? Tilt { get; set; } /// Numeric + [Required] [XmlAttribute("players")] - public string Players { get; set; } + public string? Players { get; set; } /// Only present in older versions [XmlAttribute("control")] diff --git a/SabreTools.Models/Listxml/Instance.cs b/SabreTools.Models/Listxml/Instance.cs index 43d51238..9711a791 100644 --- a/SabreTools.Models/Listxml/Instance.cs +++ b/SabreTools.Models/Listxml/Instance.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("instance")] public class Instance { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("briefname")] - public string BriefName { get; set; } + public string? BriefName { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/M1.cs b/SabreTools.Models/Listxml/M1.cs index 977faa9d..a5529ad7 100644 --- a/SabreTools.Models/Listxml/M1.cs +++ b/SabreTools.Models/Listxml/M1.cs @@ -11,7 +11,7 @@ namespace SabreTools.Models.Listxml [XmlElement("machine", typeof(Machine))] [XmlElement("game", typeof(Game))] - public GameBase[] Game { get; set; } + public GameBase[]? Game { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/Mame.cs b/SabreTools.Models/Listxml/Mame.cs index 6b03008e..00117be0 100644 --- a/SabreTools.Models/Listxml/Mame.cs +++ b/SabreTools.Models/Listxml/Mame.cs @@ -13,12 +13,13 @@ namespace SabreTools.Models.Listxml [XmlAttribute("debug")] public string? Debug { get; set; } + [Required] [XmlAttribute("mameconfig")] - public string MameConfig { get; set; } + public string? MameConfig { get; set; } [XmlElement("machine", typeof(Machine))] [XmlElement("game", typeof(Game))] - public GameBase[] Game { get; set; } + public GameBase[]? Game { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/Port.cs b/SabreTools.Models/Listxml/Port.cs index f647add3..fe4a6c65 100644 --- a/SabreTools.Models/Listxml/Port.cs +++ b/SabreTools.Models/Listxml/Port.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("port")] public class Port { + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } [XmlElement("analog")] public Analog[]? Analog { get; set; } diff --git a/SabreTools.Models/Listxml/RamOption.cs b/SabreTools.Models/Listxml/RamOption.cs index 698944cd..f3e42f7c 100644 --- a/SabreTools.Models/Listxml/RamOption.cs +++ b/SabreTools.Models/Listxml/RamOption.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("ramoption")] public class RamOption { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("default")] public string? Default { get; set; } diff --git a/SabreTools.Models/Listxml/Rom.cs b/SabreTools.Models/Listxml/Rom.cs index 6414e417..9f978fe9 100644 --- a/SabreTools.Models/Listxml/Rom.cs +++ b/SabreTools.Models/Listxml/Rom.cs @@ -6,15 +6,17 @@ namespace SabreTools.Models.Listxml [XmlRoot("rom")] public class Rom { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("bios")] public string? Bios { get; set; } /// Numeric + [Required] [XmlAttribute("size")] - public string Size { get; set; } + public string? Size { get; set; } [XmlAttribute("crc")] public string? CRC { get; set; } diff --git a/SabreTools.Models/Listxml/Sample.cs b/SabreTools.Models/Listxml/Sample.cs index 05278a56..fdfd56bd 100644 --- a/SabreTools.Models/Listxml/Sample.cs +++ b/SabreTools.Models/Listxml/Sample.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("sample")] public class Sample { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/Slot.cs b/SabreTools.Models/Listxml/Slot.cs index cf662402..945194af 100644 --- a/SabreTools.Models/Listxml/Slot.cs +++ b/SabreTools.Models/Listxml/Slot.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Listxml [XmlRoot("slot")] public class Slot { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlElement("slotoption")] public SlotOption[]? SlotOption { get; set; } diff --git a/SabreTools.Models/Listxml/SlotOption.cs b/SabreTools.Models/Listxml/SlotOption.cs index 9e28c9dc..b47b8273 100644 --- a/SabreTools.Models/Listxml/SlotOption.cs +++ b/SabreTools.Models/Listxml/SlotOption.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Listxml [XmlRoot("slotoption")] public class SlotOption { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("devname")] - public string DevName { get; set; } + public string? DevName { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Listxml/SoftwareList.cs b/SabreTools.Models/Listxml/SoftwareList.cs index de304959..7ae155b1 100644 --- a/SabreTools.Models/Listxml/SoftwareList.cs +++ b/SabreTools.Models/Listxml/SoftwareList.cs @@ -6,15 +6,18 @@ namespace SabreTools.Models.Listxml [XmlRoot("softwarelist")] public class SoftwareList { + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// (original|compatible) + [Required] [XmlAttribute("status")] - public string Status { get; set; } + public string? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Models/Listxml/Sound.cs b/SabreTools.Models/Listxml/Sound.cs index 83f958c1..5b6c25d8 100644 --- a/SabreTools.Models/Listxml/Sound.cs +++ b/SabreTools.Models/Listxml/Sound.cs @@ -7,8 +7,9 @@ namespace SabreTools.Models.Listxml public class Sound { /// Numeric + [Required] [XmlAttribute("channels")] - public string Channels { get; set; } + public string? Channels { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Listxml/Video.cs b/SabreTools.Models/Listxml/Video.cs index 0f035f05..f50d399f 100644 --- a/SabreTools.Models/Listxml/Video.cs +++ b/SabreTools.Models/Listxml/Video.cs @@ -7,12 +7,14 @@ namespace SabreTools.Models.Listxml public class Video { /// (raster|vector) + [Required] [XmlAttribute("screen")] - public string Screen { get; set; } + public string? Screen { get; set; } /// (vertical|horizontal) + [Required] [XmlAttribute("orientation")] - public string Orientation { get; set; } + public string? Orientation { get; set; } /// Numeric [XmlAttribute("width")] diff --git a/SabreTools.Models/Logiqx/Archive.cs b/SabreTools.Models/Logiqx/Archive.cs index 116e92b2..60889b0c 100644 --- a/SabreTools.Models/Logiqx/Archive.cs +++ b/SabreTools.Models/Logiqx/Archive.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("archive")] public class Archive { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Logiqx/BiosSet.cs b/SabreTools.Models/Logiqx/BiosSet.cs index 6ee7315c..2695739b 100644 --- a/SabreTools.Models/Logiqx/BiosSet.cs +++ b/SabreTools.Models/Logiqx/BiosSet.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Logiqx [XmlRoot("biosset")] public class BiosSet { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("description")] - public string Description { get; set; } + public string? Description { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/Logiqx/DeviceRef.cs b/SabreTools.Models/Logiqx/DeviceRef.cs index bad6f97e..7d6ae1b6 100644 --- a/SabreTools.Models/Logiqx/DeviceRef.cs +++ b/SabreTools.Models/Logiqx/DeviceRef.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("device_ref")] public class DeviceRef { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Logiqx/Dir.cs b/SabreTools.Models/Logiqx/Dir.cs index 4a563788..75418ec9 100644 --- a/SabreTools.Models/Logiqx/Dir.cs +++ b/SabreTools.Models/Logiqx/Dir.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("dir")] public class Dir { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlElement("game", typeof(Game))] [XmlElement("machine", typeof(Machine))] diff --git a/SabreTools.Models/Logiqx/Disk.cs b/SabreTools.Models/Logiqx/Disk.cs index 88b56228..957ff810 100644 --- a/SabreTools.Models/Logiqx/Disk.cs +++ b/SabreTools.Models/Logiqx/Disk.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("disk")] public class Disk { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("md5")] public string? MD5 { get; set; } diff --git a/SabreTools.Models/Logiqx/Driver.cs b/SabreTools.Models/Logiqx/Driver.cs index 2485c552..823605c0 100644 --- a/SabreTools.Models/Logiqx/Driver.cs +++ b/SabreTools.Models/Logiqx/Driver.cs @@ -7,20 +7,24 @@ namespace SabreTools.Models.Logiqx public class Driver { /// (good|imperfect|preliminary) + [Required] [XmlAttribute("status")] - public string Status { get; set; } + public string? Status { get; set; } /// (good|imperfect|preliminary) + [Required] [XmlAttribute("emulation")] - public string Emulation { get; set; } + public string? Emulation { get; set; } /// (good|imperfect|preliminary) + [Required] [XmlAttribute("cocktail")] - public string Cocktail { get; set; } + public string? Cocktail { get; set; } /// (supported|unsupported) + [Required] [XmlAttribute("savestate")] - public string SaveState { get; set; } + public string? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Models/Logiqx/GameBase.cs b/SabreTools.Models/Logiqx/GameBase.cs index b3ae4980..cdaf2409 100644 --- a/SabreTools.Models/Logiqx/GameBase.cs +++ b/SabreTools.Models/Logiqx/GameBase.cs @@ -8,8 +8,9 @@ namespace SabreTools.Models.Logiqx /// public abstract class GameBase { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("sourcefile")] public string? SourceFile { get; set; } @@ -56,8 +57,9 @@ namespace SabreTools.Models.Logiqx [XmlElement("comment")] public string[]? Comment { get; set; } + [Required] [XmlElement("description")] - public string Description { get; set; } + public string? Description { get; set; } [XmlElement("year")] public string? Year { get; set; } diff --git a/SabreTools.Models/Logiqx/Header.cs b/SabreTools.Models/Logiqx/Header.cs index ba63d9d9..8dd020b1 100644 --- a/SabreTools.Models/Logiqx/Header.cs +++ b/SabreTools.Models/Logiqx/Header.cs @@ -10,11 +10,13 @@ namespace SabreTools.Models.Logiqx [XmlElement("id")] public string? Id { get; set; } + [Required] [XmlElement("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlElement("description")] - public string Description { get; set; } + public string? Description { get; set; } /// Trurip extension [XmlElement("rootdir")] @@ -23,14 +25,16 @@ namespace SabreTools.Models.Logiqx [XmlElement("category")] public string? Category { get; set; } + [Required] [XmlElement("version")] - public string Version { get; set; } + public string? Version { get; set; } [XmlElement("date")] public string? Date { get; set; } + [Required] [XmlElement("author")] - public string Author { get; set; } + public string? Author { get; set; } [XmlElement("email")] public string? Email { get; set; } diff --git a/SabreTools.Models/Logiqx/Media.cs b/SabreTools.Models/Logiqx/Media.cs index deb1f008..d13fdf75 100644 --- a/SabreTools.Models/Logiqx/Media.cs +++ b/SabreTools.Models/Logiqx/Media.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("media")] public class Media { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("md5")] public string? MD5 { get; set; } diff --git a/SabreTools.Models/Logiqx/Release.cs b/SabreTools.Models/Logiqx/Release.cs index 0210a322..b44fa76b 100644 --- a/SabreTools.Models/Logiqx/Release.cs +++ b/SabreTools.Models/Logiqx/Release.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Logiqx [XmlRoot("release")] public class Release { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("region")] - public string Region { get; set; } + public string? Region { get; set; } [XmlAttribute("language")] public string? Language { get; set; } diff --git a/SabreTools.Models/Logiqx/Rom.cs b/SabreTools.Models/Logiqx/Rom.cs index 525bf289..6866113e 100644 --- a/SabreTools.Models/Logiqx/Rom.cs +++ b/SabreTools.Models/Logiqx/Rom.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.Logiqx [XmlRoot("rom")] public class Rom { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("size")] - public string Size { get; set; } + public string? Size { get; set; } [XmlAttribute("crc")] public string? CRC { get; set; } diff --git a/SabreTools.Models/Logiqx/Sample.cs b/SabreTools.Models/Logiqx/Sample.cs index e9c05638..98901f36 100644 --- a/SabreTools.Models/Logiqx/Sample.cs +++ b/SabreTools.Models/Logiqx/Sample.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.Logiqx [XmlRoot("sample")] public class Sample { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } #region DO NOT USE IN PRODUCTION diff --git a/SabreTools.Models/Logiqx/SoftwareList.cs b/SabreTools.Models/Logiqx/SoftwareList.cs index b2e3d91c..36cabc85 100644 --- a/SabreTools.Models/Logiqx/SoftwareList.cs +++ b/SabreTools.Models/Logiqx/SoftwareList.cs @@ -6,15 +6,18 @@ namespace SabreTools.Models.Logiqx [XmlRoot("softwarelist")] public class SoftwareList { + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } /// (original|compatible) + [Required] [XmlAttribute("status")] - public string Status { get; set; } + public string? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Models/OpenMSX/Software.cs b/SabreTools.Models/OpenMSX/Software.cs index a86b9b05..29167e15 100644 --- a/SabreTools.Models/OpenMSX/Software.cs +++ b/SabreTools.Models/OpenMSX/Software.cs @@ -6,23 +6,28 @@ namespace SabreTools.Models.OpenMSX [XmlRoot("software")] public class Software { + [Required] [XmlElement("title")] - public string Title { get; set; } + public string? Title { get; set; } [XmlElement("genmsxid")] public string? GenMSXID { get; set; } + [Required] [XmlElement("system")] - public string System { get; set; } + public string? System { get; set; } + [Required] [XmlElement("company")] - public string Company { get; set; } + public string? Company { get; set; } + [Required] [XmlElement("year")] - public string Year { get; set; } + public string? Year { get; set; } + [Required] [XmlElement("country")] - public string Country { get; set; } + public string? Country { get; set; } [XmlElement("dump")] public Dump[]? Dump { get; set; } diff --git a/SabreTools.Models/RequiredAttribute.cs b/SabreTools.Models/RequiredAttribute.cs new file mode 100644 index 00000000..dfb4eb5c --- /dev/null +++ b/SabreTools.Models/RequiredAttribute.cs @@ -0,0 +1,9 @@ +namespace SabreTools.Models +{ + /// + /// Marks a property as required on write + /// + /// TODO: Use reflection to determine required fields on write + [System.AttributeUsage(System.AttributeTargets.Property)] + public class RequiredAttribute : System.Attribute { } +} \ No newline at end of file diff --git a/SabreTools.Models/SeparatedValue/MetadataFile.cs b/SabreTools.Models/SeparatedValue/MetadataFile.cs index cc9f81bd..7fddc2eb 100644 --- a/SabreTools.Models/SeparatedValue/MetadataFile.cs +++ b/SabreTools.Models/SeparatedValue/MetadataFile.cs @@ -2,7 +2,8 @@ namespace SabreTools.Models.SeparatedValue { public class MetadataFile { - public string[] Header { get; set; } + [Required] + public string[]? Header { get; set; } public Row[]? Row { get; set; } } diff --git a/SabreTools.Models/SeparatedValue/Row.cs b/SabreTools.Models/SeparatedValue/Row.cs index 44979ffb..b9f170c1 100644 --- a/SabreTools.Models/SeparatedValue/Row.cs +++ b/SabreTools.Models/SeparatedValue/Row.cs @@ -15,13 +15,15 @@ namespace SabreTools.Models.SeparatedValue public string? Description { get; set; } /// Game Name - public string GameName { get; set; } + [Required] + public string? GameName { get; set; } /// Game Description public string? GameDescription { get; set; } /// Type - public string Type { get; set; } + [Required] + public string? Type { get; set; } /// Rom Name public string? RomName { get; set; } diff --git a/SabreTools.Models/SoftwareList/DataArea.cs b/SabreTools.Models/SoftwareList/DataArea.cs index 6da72615..d58ae7f1 100644 --- a/SabreTools.Models/SoftwareList/DataArea.cs +++ b/SabreTools.Models/SoftwareList/DataArea.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("dataarea")] public class DataArea { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("size")] - public string Size { get; set; } + public string? Size { get; set; } /// (8|16|32|64) "8" [XmlAttribute("width")] diff --git a/SabreTools.Models/SoftwareList/DipSwitch.cs b/SabreTools.Models/SoftwareList/DipSwitch.cs index 8fbdaf93..2fd6fd3d 100644 --- a/SabreTools.Models/SoftwareList/DipSwitch.cs +++ b/SabreTools.Models/SoftwareList/DipSwitch.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("dipswitch")] public class DipSwitch { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("tag")] - public string Tag { get; set; } + public string? Tag { get; set; } [XmlAttribute("mask")] public string? Mask { get; set; } diff --git a/SabreTools.Models/SoftwareList/DipValue.cs b/SabreTools.Models/SoftwareList/DipValue.cs index 5bbfccfc..1f70bd05 100644 --- a/SabreTools.Models/SoftwareList/DipValue.cs +++ b/SabreTools.Models/SoftwareList/DipValue.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("dipvalue")] public class DipValue { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("value")] - public string Value { get; set; } + public string? Value { get; set; } /// (yes|no) "no" [XmlAttribute("default")] diff --git a/SabreTools.Models/SoftwareList/Disk.cs b/SabreTools.Models/SoftwareList/Disk.cs index 8090eaae..ca0cbe3d 100644 --- a/SabreTools.Models/SoftwareList/Disk.cs +++ b/SabreTools.Models/SoftwareList/Disk.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("disk")] public class Disk { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("md5")] public string? MD5 { get; set; } diff --git a/SabreTools.Models/SoftwareList/DiskArea.cs b/SabreTools.Models/SoftwareList/DiskArea.cs index 01b72456..20bba255 100644 --- a/SabreTools.Models/SoftwareList/DiskArea.cs +++ b/SabreTools.Models/SoftwareList/DiskArea.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("diskarea")] public class DiskArea { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlElement("disk")] public Disk[]? Disk { get; set; } diff --git a/SabreTools.Models/SoftwareList/Feature.cs b/SabreTools.Models/SoftwareList/Feature.cs index 82c8fbf1..2d15ec4e 100644 --- a/SabreTools.Models/SoftwareList/Feature.cs +++ b/SabreTools.Models/SoftwareList/Feature.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("feature")] public class Feature { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("value")] public string? Value { get; set; } diff --git a/SabreTools.Models/SoftwareList/Info.cs b/SabreTools.Models/SoftwareList/Info.cs index eced145d..b68f5d7e 100644 --- a/SabreTools.Models/SoftwareList/Info.cs +++ b/SabreTools.Models/SoftwareList/Info.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("info")] public class Info { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("value")] public string? Value { get; set; } diff --git a/SabreTools.Models/SoftwareList/Part.cs b/SabreTools.Models/SoftwareList/Part.cs index 96125aeb..d4ff21f2 100644 --- a/SabreTools.Models/SoftwareList/Part.cs +++ b/SabreTools.Models/SoftwareList/Part.cs @@ -6,11 +6,13 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("part")] public class Part { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } + [Required] [XmlAttribute("interface")] - public string Interface { get; set; } + public string? Interface { get; set; } [XmlElement("feature")] public Feature[]? Feature { get; set; } diff --git a/SabreTools.Models/SoftwareList/Rom.cs b/SabreTools.Models/SoftwareList/Rom.cs index 16fef098..e738389f 100644 --- a/SabreTools.Models/SoftwareList/Rom.cs +++ b/SabreTools.Models/SoftwareList/Rom.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("rom")] public class Rom { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("size")] public string? Size { get; set; } diff --git a/SabreTools.Models/SoftwareList/SharedFeat.cs b/SabreTools.Models/SoftwareList/SharedFeat.cs index e0b46e1b..22c1b493 100644 --- a/SabreTools.Models/SoftwareList/SharedFeat.cs +++ b/SabreTools.Models/SoftwareList/SharedFeat.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("sharedfeat")] public class SharedFeat { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("value")] public string? Value { get; set; } diff --git a/SabreTools.Models/SoftwareList/Software.cs b/SabreTools.Models/SoftwareList/Software.cs index 5fa19bb4..194acd8b 100644 --- a/SabreTools.Models/SoftwareList/Software.cs +++ b/SabreTools.Models/SoftwareList/Software.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("software")] public class Software { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("cloneof")] public string? CloneOf { get; set; } @@ -16,14 +17,17 @@ namespace SabreTools.Models.SoftwareList [XmlAttribute("supported")] public string? Supported { get; set; } + [Required] [XmlElement("description")] - public string Description { get; set; } + public string? Description { get; set; } + [Required] [XmlElement("year")] - public string Year { get; set; } + public string? Year { get; set; } + [Required] [XmlElement("publisher")] - public string Publisher { get; set; } + public string? Publisher { get; set; } [XmlElement("notes")] public string? Notes { get; set; } diff --git a/SabreTools.Models/SoftwareList/SoftwareList.cs b/SabreTools.Models/SoftwareList/SoftwareList.cs index e374574e..8dd27821 100644 --- a/SabreTools.Models/SoftwareList/SoftwareList.cs +++ b/SabreTools.Models/SoftwareList/SoftwareList.cs @@ -6,8 +6,9 @@ namespace SabreTools.Models.SoftwareList [XmlRoot("softwarelist")] public class SoftwareList { + [Required] [XmlAttribute("name")] - public string Name { get; set; } + public string? Name { get; set; } [XmlAttribute("description")] public string? Description { get; set; } @@ -16,7 +17,7 @@ namespace SabreTools.Models.SoftwareList public string? Notes { get; set; } [XmlElement("software")] - public Software[] Software { get; set; } + public Software[]? Software { get; set; } #region DO NOT USE IN PRODUCTION