mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-28 09:15:46 +02:00
* Switch to .NET Framework 4.7.2 & C# 8.0, update libraries * Add TweetLib.Core project targeting .NET Standard 2.0 * Enable reference nullability checks for TweetLib.Core * Move a bunch of utility classes into TweetLib.Core & refactor * Partially move TweetDuck plugin & update system to TweetLib.Core * Move some constants and CultureInfo setup to TweetLib.Core * Move some configuration classes to TweetLib.Core * Minor refactoring and warning suppression * Add App to TweetLib.Core * Add IAppErrorHandler w/ implementation * Continue moving config, plugin, and update classes to TweetLib.Core * Fix a few nullability checks * Update installers to check for .NET Framework 4.7.2
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TweetLib.Core.Features.Configuration{
|
|
public abstract class BaseConfig{
|
|
private readonly IConfigManager configManager;
|
|
|
|
protected BaseConfig(IConfigManager configManager){
|
|
this.configManager = configManager;
|
|
}
|
|
|
|
// Management
|
|
|
|
public void Save(){
|
|
configManager.GetInstanceInfo(this).Save();
|
|
}
|
|
|
|
public void Reload(){
|
|
configManager.GetInstanceInfo(this).Reload();
|
|
}
|
|
|
|
public void Reset(){
|
|
configManager.GetInstanceInfo(this).Reset();
|
|
}
|
|
|
|
// Construction methods
|
|
|
|
public T ConstructWithDefaults<T>() where T : BaseConfig{
|
|
return (T)ConstructWithDefaults(configManager);
|
|
}
|
|
|
|
protected abstract BaseConfig ConstructWithDefaults(IConfigManager configManager);
|
|
|
|
// Utility methods
|
|
|
|
protected void UpdatePropertyWithEvent<T>(ref T field, T value, EventHandler eventHandler){
|
|
if (!EqualityComparer<T>.Default.Equals(field, value)){
|
|
field = value;
|
|
eventHandler?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
protected void UpdatePropertyWithRestartRequest<T>(ref T field, T value){
|
|
if (!EqualityComparer<T>.Default.Equals(field, value)){
|
|
field = value;
|
|
configManager.TriggerProgramRestartRequested();
|
|
}
|
|
}
|
|
}
|
|
}
|