diff --git a/SabreTools.Serialization/Extensions/PortableExecutable.cs b/SabreTools.Serialization/Extensions/PortableExecutable.cs index b39ce9f1..dd71dd66 100644 --- a/SabreTools.Serialization/Extensions/PortableExecutable.cs +++ b/SabreTools.Serialization/Extensions/PortableExecutable.cs @@ -995,6 +995,7 @@ namespace SabreTools.Data.Extensions /// /// Resource data entry to parse into a string table resource /// A filled string table resource on success, null on error + /// TODO: Create concrete type for this and inherit from ResourceDataType public static Dictionary? AsStringTable(this Models.PortableExecutable.Resource.DataEntry? entry) { // If we have an invalid entry, just skip diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AcceleratorTable.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AcceleratorTable.cs index a4e92407..207edae1 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AcceleratorTable.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AcceleratorTable.cs @@ -9,7 +9,7 @@ namespace SabreTools.Data.Models.PortableExecutable.Resource.Entries /// by eight. Then your application can randomly access the individual fixed-length entries. /// /// - public sealed class AcceleratorTable + public sealed class AcceleratorTable : ResourceDataType { /// /// Accelerator table entries diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AssemblyManifest.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AssemblyManifest.cs index bce58e0b..b1103ccd 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AssemblyManifest.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/AssemblyManifest.cs @@ -4,7 +4,7 @@ namespace SabreTools.Data.Models.PortableExecutable.Resource.Entries { /// [XmlRoot(ElementName = "assembly", Namespace = "urn:schemas-microsoft-com:asm.v1")] - public sealed class AssemblyManifest + public sealed class AssemblyManifest : ResourceDataType { [XmlAttribute("manifestVersion")] public string? ManifestVersion { get; set; } diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/DialogBoxResource.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/DialogBoxResource.cs index 690fde6e..6f8160a1 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/DialogBoxResource.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/DialogBoxResource.cs @@ -7,7 +7,7 @@ /// describe the format of extended dialog box resources. /// /// - public sealed class DialogBoxResource + public sealed class DialogBoxResource : ResourceDataType { #region Dialog template diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/FontGroupHeader.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/FontGroupHeader.cs index 0c209231..fdff33d9 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/FontGroupHeader.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/FontGroupHeader.cs @@ -5,7 +5,7 @@ /// definition provided here is for explanation only; it is not present in any standard header file. /// /// - public sealed class FontGroupHeader + public sealed class FontGroupHeader : ResourceDataType { /// /// The number of individual fonts associated with this resource. diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MenuResource.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MenuResource.cs index 5828a15b..b30552b0 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MenuResource.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MenuResource.cs @@ -7,7 +7,7 @@ /// describe the format of extended menu resources. /// /// - public sealed class MenuResource + public sealed class MenuResource : ResourceDataType { /// /// Menu header structure diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MessageResourceData.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MessageResourceData.cs index 088f9cce..26329b87 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MessageResourceData.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/MessageResourceData.cs @@ -7,7 +7,7 @@ namespace SabreTools.Data.Models.PortableExecutable.Resource.Entries /// box in a message table resource. /// /// - public sealed class MessageResourceData + public sealed class MessageResourceData : ResourceDataType { /// /// The number of MESSAGE_RESOURCE_BLOCK structures. diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/ResourceDataType.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/ResourceDataType.cs new file mode 100644 index 00000000..fe320891 --- /dev/null +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/ResourceDataType.cs @@ -0,0 +1,7 @@ +namespace SabreTools.Data.Models.PortableExecutable.Resource.Entries +{ + /// + /// Generic base class for resource data types + /// + public abstract class ResourceDataType { } +} diff --git a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/VersionInfo.cs b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/VersionInfo.cs index dcc8a9e7..302b5eb1 100644 --- a/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/VersionInfo.cs +++ b/SabreTools.Serialization/Models/PortableExecutable/Resource/Entries/VersionInfo.cs @@ -5,7 +5,7 @@ /// structure that contains all other file-version information structures. /// /// - public sealed class VersionInfo + public sealed class VersionInfo : ResourceDataType { /// /// The length, in bytes, of the VS_VERSIONINFO structure. This length does not