为特定设置创建 类 是一种好习惯吗?
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();
}
}
我有一个正在编写的 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();
}
}