88 lines
5.5 KiB
Markdown
88 lines
5.5 KiB
Markdown
|
|
---
|
|||
|
|
source_files:
|
|||
|
|
- DataPRO/CustomWindow/Properties/Settings.Designer.cs
|
|||
|
|
- DataPRO/CustomWindow/Properties/AssemblyInfo.cs
|
|||
|
|
- DataPRO/CustomWindow/Properties/Resources.Designer.cs
|
|||
|
|
generated_at: "2026-04-16T04:04:30.243266+00:00"
|
|||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|||
|
|
schema_version: 1
|
|||
|
|
sha256: "cd679b0f0e9e41f7"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Properties
|
|||
|
|
|
|||
|
|
## Documentation: `CustomWindow.Properties` Module
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 1. **Purpose**
|
|||
|
|
|
|||
|
|
This module provides auto-generated infrastructure for application settings and resource management in the `CustomWindow` WPF assembly. It enables strongly-typed access to user-scoped settings via the `Settings` class and localized string/resource lookups via the `Resources` class. It serves as a supporting layer for configuration persistence and localization, but contains no business logic itself—its sole purpose is to expose .NET Framework’s `ApplicationSettingsBase` and `ResourceManager` APIs in a type-safe manner.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. **Public Interface**
|
|||
|
|
|
|||
|
|
All classes are `internal` (not `public`), and members are auto-generated. Only the following *internally accessible* APIs are exposed:
|
|||
|
|
|
|||
|
|
#### `Settings` Class
|
|||
|
|
- **Namespace**: `CustomWindow.Properties`
|
|||
|
|
- **Type**: `internal sealed partial class Settings : ApplicationSettingsBase`
|
|||
|
|
- **Static Property**:
|
|||
|
|
- `public static Settings Default { get; }`
|
|||
|
|
Returns the singleton instance of `Settings`, synchronized for thread safety via `ApplicationSettingsBase.Synchronized`. This is the standard entry point for reading/writing user settings.
|
|||
|
|
|
|||
|
|
#### `Resources` Class
|
|||
|
|
- **Namespace**: `CustomWindow.Properties`
|
|||
|
|
- **Type**: `internal sealed class Resources`
|
|||
|
|
- **Static Properties**:
|
|||
|
|
- `internal static ResourceManager ResourceManager { get; }`
|
|||
|
|
Lazily initializes and returns a `ResourceManager` instance bound to the `"CustomWindow.Properties.Resources"` base name in the current assembly.
|
|||
|
|
- `internal static CultureInfo Culture { get; set; }`
|
|||
|
|
Gets or sets the UI culture used for resource lookups (overrides the current thread’s `CurrentUICulture` for this class only).
|
|||
|
|
|
|||
|
|
> **Note**: No explicit resource properties (e.g., `public static string SomeString { get; }`) are visible in the source. These are generated at build time from `.resx` files and are not present in the provided `.Designer.cs` file.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. **Invariants**
|
|||
|
|
|
|||
|
|
- `Settings.Default` is guaranteed to be a thread-safe singleton (via `Synchronized` wrapper).
|
|||
|
|
- `Resources.ResourceManager` is lazily initialized exactly once per AppDomain (null-check + assignment is not thread-safe in the generated code, but `ResourceManager` itself is thread-safe for concurrent reads).
|
|||
|
|
- The `Settings` class inherits from `ApplicationSettingsBase`, implying it adheres to .NET’s standard settings semantics (e.g., per-user storage, `userSettings` section in config, etc.).
|
|||
|
|
- The assembly is **not COM-visible** (`[ComVisible(false)]`), so these types are not exposed to COM clients.
|
|||
|
|
- Resource fallback behavior is explicitly configured:
|
|||
|
|
- Theme-specific resources are *not* used (`ResourceDictionaryLocation.None`).
|
|||
|
|
- Generic resources are embedded in the assembly (`ResourceDictionaryLocation.SourceAssembly`).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4. **Dependencies**
|
|||
|
|
|
|||
|
|
#### Dependencies *of* this module:
|
|||
|
|
- `System.Configuration` (for `ApplicationSettingsBase`)
|
|||
|
|
- `System.Resources` (for `ResourceManager`, `Resources`)
|
|||
|
|
- `System.Globalization` (for `CultureInfo`)
|
|||
|
|
- `System.Windows` (via `[assembly: ThemeInfo(...)]`, required for WPF resource handling)
|
|||
|
|
|
|||
|
|
#### Dependencies *on* this module:
|
|||
|
|
- The `CustomWindow` WPF application (inferred from namespace and assembly attributes) uses this module for:
|
|||
|
|
- Reading/writing user settings via `CustomWindow.Properties.Settings.Default.[PropertyName]`.
|
|||
|
|
- Localizing UI strings and resources via `CustomWindow.Properties.Resources.[ResourceName]` (though actual resource names are not visible here).
|
|||
|
|
|
|||
|
|
> **Note**: No other modules in the codebase are referenced in the provided files.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5. **Gotchas**
|
|||
|
|
|
|||
|
|
- **Auto-generated code**: Both `Settings.Designer.cs` and `Resources.Designer.cs` are marked as auto-generated. Manual edits will be overwritten on rebuild. Changes must be made to the corresponding `.settings` (for settings) or `.resx` (for resources) files.
|
|||
|
|
- **Missing resource properties**: The `Resources` class definition shown contains no strongly-typed resource properties (e.g., `public static string AppTitle { get; }`). Their absence here means they are either not yet defined or generated separately. Do not assume any specific resource keys exist.
|
|||
|
|
- **Thread-safety nuance**: While `Settings.Default` is thread-safe, *modifying* settings (e.g., `Settings.Default.MyProp = value`) should be done with care—`ApplicationSettingsBase` does not guarantee atomicity of compound operations.
|
|||
|
|
- **No versioning metadata**: Assembly version is hardcoded to `1.0.0.0` (both `AssemblyVersion` and `AssemblyFileVersion`). This may impact deployment or upgrade logic if settings are version-sensitive.
|
|||
|
|
- **No localization enabled by default**: The `[assembly: NeutralResourcesLanguage(...)]` attribute is commented out. Without it, resource fallback may behave unexpectedly if the current UI culture does not match the neutral language of the `.resx` files.
|
|||
|
|
- **No custom settings defined**: The `Settings` class has no properties declared in the provided source. This implies either:
|
|||
|
|
- Settings are defined elsewhere (e.g., in `Settings.settings` designer), or
|
|||
|
|
- The module is a skeleton with no active configuration keys.
|
|||
|
|
|
|||
|
|
None identified beyond the above.
|