为特定设置创建 类 是一种好习惯吗?

Is it good practice to create classes for specific settings?

我有一个正在编写的 Windows 表格申请。

现在,此应用程序将通过文本框等与用户交互。

我设计了 4 类 来保存所有需要的设置(这将是 DirectorySettings、LoopSettings、AttackSettings 和 AutoPotSettings),这将用于保存文本框等的值。

我让它们都可以序列化。

我的计划是保存那些 类 以便稍后恢复它们并加载在它们上定义的设置,这样它们就可以在各种应用程序会话期间持续存在。

我的问题是,这是好的做法还是有其他方法可以做到这一点?

此设置值将在 运行 时间内多次使用,我希望我的用户能够保存它们以供以后使用。

编辑:当我阅读有关 Properties.Settings 以保存设置的信息时出现了这个问题。我不确定我应该使用该功能,还是应该使用我自己的 类 来保存这些功能。

有道理。也许创建一个 userprofile class,其中包含所有与游戏状态相关的用户信息。然后序列化该对象。你可以绑定用户代码,这样当他们登录时,他们就会得到所有与状态相关的信息

它允许人们拥有多个 users/games 等与单个状态

在 Class 设计方面,您可以使用 interface/Abstract class 来定义 Saving/Reading 行为,例如 IGameState 接口如以下所说的。它有 2 个方法 a) SaveState b) ReadState 用于保存和读取状态。

然后你的classDirectorySettings、LoopSettings、AttackSettings、AutoPotSettings就可以实现接口了。在您的主程序中,您将能够定义一个抽象,如下面 Main 方法中突出显示的那样,以便主程序代码与设置列表分离。

如果您有很多设置并且需要更多控制,这种方法应该有助于轻松扩展系统。

 class Program
    {
        static void Main(string[] args)
        {
            List<IGameState> lstSaveState = new List<IGameState>();
            // For Saving State
            lstSaveState.ForEach(x=>x.SaveState());

        // For Reading State
        lstSaveState.ForEach(x => x.ReadState());
    }

}

public interface IGameState
{
    void SaveState();

    IGameState ReadState();
}


public class DirectorySettings : IGameState
{
    public void SaveState()
    {
        // Serialize
    }

    public IGameState ReadState()
    {
        // Deserialize
        throw NotImplementedException();
    }
}

public class LoopSettings : IGameState
{
    public void SaveState()
    {
        // Serialize
    }

    public IGameState ReadState()
    {
        // Deserialize
        throw NotImplementedException();
    }
}