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

时间:2015-12-26 18:01:04

标签: c# class serialization settings

我有一个Windows表单应用程序,我正在编写。

现在,此应用程序将通过TextBoxs等与用户进行交互。

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

我把它们都变成了Serializable。

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

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

此设置值将在运行时多次使用,我希望我的用户能够将其保存以供以后的会话使用。

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

2 个答案:

答案 0 :(得分:1)

有道理。也许创建一个userprofile类,它包含与游戏状态有关的所有用户相关内容。然后序列化那个对象。 U可以绑定到用户代码,因此当他们登录时,他们会获得所有与状态相关的信息

它允许人们拥有多个用户/游戏等对比单个州

答案 1 :(得分:1)

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

然后您的类DirectorySettings,LoopSettings,AttackSettings,AutoPotSettings可以实现该接口。在主程序中,您可以在下面的Main方法中突出显示一个抽象,以便Main程序代码与Settings列表分离。

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

 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();
    }
}