C# 在WPF MVVM应用程序中存储和使用AppConfig类的良好实践 假设我的应用程序需要使用AppConfig值 可能存在允许在运行时更改某些值并保存它们的选项View 此外,其他ViewModels在运行时使用AppConfig值。例如,LogViewModel可以登记日志,并根据AppConfig值添加附加信息,例如每个日志的时间戳
我想知道使用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类来实现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));
}
}
}
哪种解决方案更好