C# 反序列化无法列出数据
我正在尝试创建一个可以序列化和反序列化数据的应用程序,我可以序列化信息,但是当我尝试读取信息时,我留下了一个空列表,我不知道为什么 我的序列化类 我的序列化/反序列化方法 我已经检查以确保文件路径正确,并且文件本身不是空的。一切都很好,但是defo列表总是空的,因此我只能假设问题出在defo=Listbin.Deserializestream;但是我不知道为什么。尝试为每个属性设置[Serializable]属性 所以看起来是这样的:C# 反序列化无法列出数据,c#,visual-studio,serialization,C#,Visual Studio,Serialization,我正在尝试创建一个可以序列化和反序列化数据的应用程序,我可以序列化信息,但是当我尝试读取信息时,我留下了一个空列表,我不知道为什么 我的序列化类 我的序列化/反序列化方法 我已经检查以确保文件路径正确,并且文件本身不是空的。一切都很好,但是defo列表总是空的,因此我只能假设问题出在defo=Listbin.Deserializestream;但是我不知道为什么。尝试为每个属性设置[Serializable]属性 所以看起来是这样的: [Serializable()] public class
[Serializable()]
public class FileSerilizeObject
{
[Serializable()]
public string FileName { get; set; }
[Serializable()]
public string Extension { get; set; }
[Serializable()]
public string Base64 { get; set; }
public FileSerilizeObject(string filename, string extension, string base64vaulue)
{
FileName = filename;
Extension = extension;
Base64 = base64vaulue;
}
}
}
编辑:从属性中删除静态关键字。您需要从属性中删除静态关键字
[Serializable]
public class FileSerializeObject
{
public string FileName { get; set; }
public string Extension { get; set; }
public string Base64 { get; set; }
public FileSerializeObject(string filename, string extension, string base64vaulue)
{
FileName = filename;
Extension = extension;
Base64 = base64vaulue;
}
}
我将您的代码测试到一个控制台应用程序中,它对我有效,我使用VS2013进行了测试,但我使用的代码与您上面编写的代码相同 一些细节: 1.我从FileSerilizeObject中删除了static这个词 类FileSerializeObject 功能 主要
编译器说[Serializable]属性在此声明类型上无效。好的,那么您正在尝试序列化FileSerializeObject类的FileName、Extension和Base64属性,是否正确?是的,我正在尝试序列化和反序列化该信息。这些属性的值将始终相同,因为它们是静态的。你想让列表中的所有项都有相同的值吗?啊,不,它们是动态变化的。我只是添加了它们,这样我就可以从我的主类访问它们,因为它不允许我作为新实例调用该类。
[Serializable()]
public class FileSerilizeObject
{
[Serializable()]
public string FileName { get; set; }
[Serializable()]
public string Extension { get; set; }
[Serializable()]
public string Base64 { get; set; }
public FileSerilizeObject(string filename, string extension, string base64vaulue)
{
FileName = filename;
Extension = extension;
Base64 = base64vaulue;
}
}
}
[Serializable]
public class FileSerializeObject
{
public string FileName { get; set; }
public string Extension { get; set; }
public string Base64 { get; set; }
public FileSerializeObject(string filename, string extension, string base64vaulue)
{
FileName = filename;
Extension = extension;
Base64 = base64vaulue;
}
}
[Serializable()]
public class FileSerilizeObject
{
public string FileName { get; set; }
public string Extension { get; set; }
public string Base64 { get; set; }
public FileSerilizeObject(string filename, string extension, string base64vaulue)
{
FileName = filename;
Extension = extension;
Base64 = base64vaulue;
}
}
public static void Serialize(List<FileSerilizeObject> List)
{
using (Stream stream = File.Open(@"C:\Users\ttest\Desktop\folder1\data.bin", FileMode.OpenOrCreate))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, List);
stream.Close();
}
}
public static List<FileSerilizeObject> Deserialised(string OpenPath)
{
List<FileSerilizeObject> defo;
using (Stream stream = File.Open(OpenPath, FileMode.Open))
{
BinaryFormatter bin = new BinaryFormatter();
defo = (List<FileSerilizeObject>)bin.Deserialize(stream);
}
return defo;
}
var bytes = Encoding.UTF8.GetBytes("dffesdbcdef==");
var base64 = Convert.ToBase64String(bytes);
FileSerilizeObject f1 = new FileSerilizeObject("test", "jpg", base64);
bytes = Encoding.UTF8.GetBytes("ggasddbcdef==");
base64 = Convert.ToBase64String(bytes);
FileSerilizeObject f2 = new FileSerilizeObject("test2", "png", base64);
bytes = Encoding.UTF8.GetBytes("asddffasdasdasdesdbcdef==");
base64 = Convert.ToBase64String(bytes);
FileSerilizeObject f3 = new FileSerilizeObject("test3", "doc", base64);
List<FileSerilizeObject> lFiles = new List<FileSerilizeObject>();
lFiles.Add(f1);
lFiles.Add(f2);
lFiles.Add(f3);
Serialize(lFiles);
Deserialised(@"C:\Users\rjimen4x\Desktop\tutoriales\data.bin");