Files
ClassicAssist.Avalonia/.qoder/repowiki/knowledge/en/ClassicAssist .NET Solution/ClassicAssist Launcher (WPF)/coding_conventions.md
T
Beyhan Oğur d5f52cc3d3 first commit
2026-09-03 04:45:36 +03:00

1012 B

  • ViewModels inherit BaseViewModel and expose properties via SetProperty(ref _field, value) so that CommandManager.InvalidateRequerySuggested is automatically called on change.
  • User actions are bound to ICommand properties implemented as lazy-initialized RelayCommand/RelayCommandAsync fields, with optional canExecute predicates passed at construction.
  • ClassicUO command-line flags are declared declaratively on ClassicOptions properties using [ClassicOption(...)] attributes rather than hard-coded string literals, and consumed uniformly via reflection in ReadClassicOptions/BuildClassicOptions.
  • Per-user configuration is serialized/deserialized manually against Newtonsoft.Json.Linq.JObject/JArray instead of using POCO serialization, with explicit field-by-field read/write paths in MainViewModel.Closing and the constructor.
  • Singleton services (e.g. ShardManager) use double-checked locking with a static _lock object exposed through a GetInstance() factory method.