C# 在WPF MVVM应用程序中存储和使用AppConfig类的良好实践 假设我的应用程序需要使用AppConfig值 可能存在允许在运行时更改某些值并保存它们的选项View 此外,其他ViewModels在运行时使用AppConfig值。例如,LogViewModel可以登记日志,并根据AppConfig值添加附加信息,例如每个日志的时间戳

C# 在WPF MVVM应用程序中存储和使用AppConfig类的良好实践 假设我的应用程序需要使用AppConfig值 可能存在允许在运行时更改某些值并保存它们的选项View 此外,其他ViewModels在运行时使用AppConfig值。例如,LogViewModel可以登记日志,并根据AppConfig值添加附加信息,例如每个日志的时间戳,c#,mvvm,app-config,C#,Mvvm,App Config,我想知道使用AppConfig的好方法是什么 我应该考虑准备一个AppCOnFIG类来实现IAPCONFIG,并将其注入到每个视图模型中 -在这种情况下,我应该通过构造函数将其注入,并与包装接口-提供程序一起使用: private readonly IAppConfigProvider _appConfigProvider; private IAppConfigProvider AppConfigProvider { get {

我想知道使用AppConfig的好方法是什么

我应该考虑准备一个AppCOnFIG类来实现IAPCONFIG,并将其注入到每个视图模型中 -在这种情况下,我应该通过构造函数将其注入,并与包装接口-提供程序一起使用:

private readonly IAppConfigProvider _appConfigProvider;

    private IAppConfigProvider AppConfigProvider
    {
        get
        {
            return _appConfigProvider.ProvideAppConfig();
        }
    }


public interface IAppConfigProvider 
{
    IAppConfig ProvideAppConfig();
    void SetAppConfig(IAppConfig mainConfig);
}
由于上面的构造,我确保注入AppConfig的每个ViewModel或服务都有相同的AppConfig实例

然而,这种解决方案不是一种过度的、过度的工程吗

也许我应该准备静态AppConfig类。 我知道在第二种情况下,我不能通过接口使用模拟

public class AppConfig : IAppConfig
{

    public AppConfig()
    {
        var exePath = Assembly.GetExecutingAssembly().Location;
        _config = ConfigurationManager.OpenExeConfiguration(exePath);
    }

    public bool SampleProperty
    {
        get { return GetSettings(AppConfigKey.SampleProperty.GetName()) == "1"; }
        set
        {
            SetSettings(AppConfigKey.SampleProperty.GetName(), Convert.ToInt32(value).ToString(CultureInfo.InvariantCulture));
        }
    }
}
哪种解决方案更好