C#如何保存并加载类中数据public class DataViewModel : INotifyPropertyChanged
时间: 2024-11-03 14:17:50 浏览: 7
在C#中,当你需要保存和加载`DataViewModel`类中的数据,并且这个类实现了`INotifyPropertyChanged`接口来通知属性更改时,可以采用以下步骤:
1. **保存数据**:
- 使用序列化技术,如`System.IO.IsolatedStorage`(适用于Windows Store应用)、`System.Runtime.Serialization.Formatters.Binary`(文件或内存),或者更现代的`System.IO.Json`或第三方库如Json.NET来进行JSON/XML等格式的数据持久化。
```csharp
// 如果有自定义的数据序列化
public void SaveData(string filePath) {
using (var fileStream = new FileStream(filePath, FileMode.Create)) {
var formatter = new BinaryFormatter();
formatter.Serialize(fileStream, this);
}
}
// 或者使用Json.NET
public string SaveToJson(string filePath) {
var jsonSerializer = new JsonSerializer();
string jsonData = JsonConvert.SerializeObject(this, Formatting.Indented);
File.WriteAllText(filePath, jsonData);
return jsonData;
}
```
2. **加载数据**:
- 从文件、数据库或其他存储源读取数据,然后反序列化回`DataViewModel`实例。
```csharp
// 二进制反序列化
public static DataViewModel LoadDataFromBinary(string filePath) {
if (!File.Exists(filePath))
return null;
using (var fileStream = new FileStream(filePath, FileMode.Open)) {
var formatter = new BinaryFormatter();
return (DataViewModel)formatter.Deserialize(fileStream);
}
}
// Json反序列化
public static DataViewModel LoadDataFromJson(string filePath) {
string jsonText = File.ReadAllText(filePath);
var dataViewModel = JsonConvert.DeserializeObject<DataViewModel>(jsonText);
return dataViewModel;
}
```
阅读全文