c# - 将自定义设置的对象传递给嵌套类
问题描述
在一个 MVVM 应用程序中,我有一个 Manager 类,它负责对我的应用程序需要的所有类进行分组,并将它们以单个对象的形式传递给所有 ViewModel。
这个管理器有一个菜单类、一个客户类和一个设置类。在该设置类中,我将来自两个来源的所有设置分组:
- App.Config 文件的配置。
- 从计算机配置环境变量。
情况是,例如,如果在我的 ViewModel 中使用 CustomClass1,在其中使用 CustomClass2,并且此类需要设置,则我总是必须先将 Settings 对象传递给 CustomClass1,然后再将设置传递给 CustomClass2,并且已经定义了设置。
有什么办法可以让这变得更好吗?
代码示例:
public class Settings {
public string FROM_ENVIROMENT { get; }
public string URL_OF_WEBSERVICE { get; }
public Settings () {
FROM_ENVIROMENT = Environment.GetEnvironmentVariable ("ENV_1") ?? Environment.GetEnvironmentVariable ("ENV_2") ?? "MY_DEFAULT_ENV";
URL_OF_WEBSERVICE = Properties.Settings.Default.URL_OF_WEBSERVICE;
}
}
public class Manager
{
public Customer Customer { get; }
public Settings Settings { get; set; }
public Manager () {
Customer = new Customer ();
Settings = new Settings ();
}
}
public class MainViewModel{
public Manager Manager { get; set; }
public CustomerViewModel CustomerVM { get; set; }
public MainViewModel () {
Manager = new Manager ();
CustomerVM = new CustomerViewModel(Manager);
}
}
public class CustomerViewModel{
private Manager Manager { get; }
public Customer Customer {
get => Manager.Customer;
}
public Settings Settings {
get => Manager.Settings;
}
public CustomerViewModel(Manager _manager) {
Manager = _manager;
CustomClass1 class1 = new CustomClass1(Settings);
}
}
public class CustomClass1{
public Settings Settings { get; }
public CustomClass1(Settings _settings) {
Settings = _settings;
}
public SomeTask(){
CustomClass2 class2 = new CustomClass2(Settings);
}
}
public class CustomClass2{
public Settings Settings { get; }
public CustomClass2(Settings _settings) {
// Here, I need a Setting and the object pass from Manager, to MainViewModel, to CustomerViewModel, to CustomClass1 and finally to CustomClass2...
}
}
解决方案
推荐阅读
- javascript - 无法使用 ajax 将某些文件上传到 php 服务器
- javascript - 如何提取id并在axios中发送
- excel - 在 Excel 的主工作表中创建固定单元格以从多个工作表中检索数据
- c# - 如何将正文中的 null 传递到 asp.net core 3.1 中的端点
- c++ - cpp 中的 WaitForSeconds 函数
- android - contentResolver 不会在子目录中递归搜索
- python - 使用 Python 将 csv 列中的测试数据拆分为多个
- apache-spark - 所有执行程序以状态 KILLED 和 exitStatus 1 结束
- javascript - 将数组推入对象 Javascipt
- python - 绘制 Keras 股票市场预测神经网络的结果