--- source_files: - DataPRO/Modules/PreviousDBVersions/Version57/DatabaseExport/Utilities/DiskUtility.cs - DataPRO/Modules/PreviousDBVersions/Version57/DatabaseExport/Utilities/Exceptional.cs - DataPRO/Modules/PreviousDBVersions/Version57/DatabaseExport/Utilities/ExceptionalList.cs - DataPRO/Modules/PreviousDBVersions/Version57/DatabaseExport/Utilities/AttributeCoder.cs generated_at: "2026-04-17T15:53:59.285477+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "c2a6300146b5dc97" --- # Documentation: DatabaseExport Utilities ## 1. Purpose This module provides utility classes for the `DatabaseExport` subsystem within the DataPRO Version 57 codebase. It includes an exception-handling base class hierarchy (`Exceptional`, `ExceptionalList`) designed to enable type-specific exception catching, a disk/file validation utility (`DiskUtility`), and a reflection-based attribute manipulation framework (`AttributeCoder`) for encoding/decoding attribute values attached to types—primarily intended for use with enumeration types. --- ## 2. Public Interface ### `Exceptional` (abstract class) **Namespace:** `DatabaseExport` **Inheritance:** `object` ← `Exceptional` **Attributes:** `[Serializable]` An abstract marker/base class with no members. Intended as the "ultimate" base class for classes that expect to throw exceptions, allowing callers to catch exceptions by the throwing class's type. --- ### `ExceptionalList` (generic class) **Namespace:** `DatabaseExport` **Inheritance:** `List` ← `ExceptionalList` **Attributes:** `[global::System.Serializable]` A generic collection that inherits from `List` and is intended to provide its own exception type. No additional members are defined beyond those inherited from `List`. --- ### `DiskUtility` (static class) **Namespace:** `DatabaseExport` **Inheritance:** `Exceptional` ← `DiskUtility` A collection of disk-related utility methods. #### Methods | Signature | Description | |-----------|-------------| | `public static bool ValidateFileAndPathNameChars(string nameToValidate)` | Validates that the input string contains no illegal file or path characters. Returns `true` if valid, `false` otherwise. | **Validation rules applied:** - Rejects strings that are empty or whitespace-only after trimming - Rejects strings containing any character from `Path.GetInvalidFileNameChars()` - Rejects strings containing any character from `Path.GetInvalidPathChars()` - Rejects strings containing the period character (`'.'`) --- ### `AttributeCoder` (generic class) **Namespace:** `DatabaseExport` **Inheritance:** `Exceptional` ← `AttributeCoder<,,>` A reflection-based utility for manipulating attributes attached to types, designed primarily for enum-to-attribute value mapping. #### Delegates | Delegate | Signature | |----------|-----------| | `AttributeValueExtractionMethod` | `AttributeValueType(AttributeType attribute)` | | `AttributeValueEqualityComparisonMethod` | `bool(AttributeValueType value1, AttributeValueType value2)` | #### Constructor ```csharp public AttributeCoder( AttributeValueExtractionMethod attributeValueExtractionMethod, AttributeValueEqualityComparisonMethod attributeValueEqualityComparisonMethod) ``` Initializes the coder with a required extraction method and an optional equality comparison method. If `attributeValueEqualityComparisonMethod` is `null`, default equality comparison is used. #### Methods | Signature | Description | |-----------|-------------| | `public AttributeValueType DecodeAttributeValue(TargetType target)` | Returns the attribute value of `AttributeType` attached to the specified `TargetType`. Expects exactly one attribute; throws if none found. | | `public List DecodeAttributeValues(TargetType target)` | Returns a list of all `AttributeValueType` values from `AttributeType` attributes attached to the specified `TargetType`. | | `public TargetType EncodeAttributeValue(AttributeValueType attributeValue)` | Returns the `TargetType` value that has an `AttributeType` attribute with the specified value. Expects exactly one match; throws otherwise. | | `public List DehashAttributeValue(AttributeValueType attributeValue)` | Returns