对于我正在处理的项目,我需要将所有变量的状态保存在控制台应用程序中。
我知道我可以将单个变量写入文件,但是我想知道是否有任何方法可以对程序中每个带有值的变量执行此操作。
这有可能吗?如果可以,我将如何实现呢?
答案 0 :(得分:1)
取决于情况。我将创建一个可序列化的类,其中包含要序列化的所有数据,然后在退出应用程序之前将该类序列化为文件。
然后,在应用程序启动时反序列化文件(如果存在)。该类需要标记为Serializable
。
[Serializable]
public class AppState
{
public int Var1 { get; set; }
public long Var2 { get; set; }
public String Var3 { get; set; }
}
然后,将该类的实例序列化为二进制...
var state = new AppState();
state.Var1 = 4;
//TODO: populate the state object
var formatter = new BinaryFormatter();
using(var stream = new FileStream("C:\\app.state", FileMode.Create, FileAccess.Write))
{
formatter.Serialize(stream, state);
stream.Close();
}
要重新加载状态,请首先确保文件存在...
if(File.Exists("C:\\path_to_file")){
//TODO: do whatever you need to here, such as deserializing the file
}
然后反序列化并初始化所有必需的变量...
var formatter = new BinaryFormatter();
AppState state = null;
using(var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
state = (AppState) formatter.Deserialize(stream);
}
if(state != null){
//TODO: initialize state
}
请注意,有许多方法可以序列化数据。最受欢迎的是:
答案 1 :(得分:0)
对每个变量使用项目call
,然后在需要时使用Settings
。
从解决方案资源管理器>设置中右键单击您的项目。
根据需要创建一个设置文件,然后创建变量。
然后使用:Properties.Settings.Default.Save()