首页 > 解决方案 > 将自定义设置的对象传递给嵌套类

问题描述

在一个 MVVM 应用程序中,我有一个 Manager 类,它负责对我的应用程序需要的所有类进行分组,并将它们以单个对象的形式传递给所有 ViewModel。

这个管理器有一个菜单类、一个客户类和一个设置类。在该设置类中,我将来自两个来源的所有设置分组:

情况是,例如,如果在我的 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...
    }
}

标签: c#.netmvvmapplication-settings

解决方案


推荐阅读