我有一个Windows表单应用程序,我正在编写。
现在,此应用程序将通过TextBoxs等与用户进行交互。
我设计了4个类来保存所需的所有设置(这将是DirectorySettings,LoopSettings,AttackSettings和AutoPotSettings),这将用于保存文本框中的值等。
我把它们都变成了Serializable。
我的计划是保存这些类以便以后恢复它们并加载它们上定义的设置,这样它们就可以在各种应用程序会话期间保持不变。
我的问题是,这是一种好的做法,还是有其他方法可以做到这一点?
此设置值将在运行时多次使用,我希望我的用户能够将其保存以供以后的会话使用。
编辑:当我读到有关保存设置的Properties.Settings时出现了这个问题。我不确定我应该使用该功能,还是应该使用我自己的类来保存它们。
答案 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();
}
}