Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化无法列出数据_C#_Visual Studio_Serialization - Fatal编程技术网

C# 反序列化无法列出数据

C# 反序列化无法列出数据,c#,visual-studio,serialization,C#,Visual Studio,Serialization,我正在尝试创建一个可以序列化和反序列化数据的应用程序,我可以序列化信息,但是当我尝试读取信息时,我留下了一个空列表,我不知道为什么 我的序列化类 我的序列化/反序列化方法 我已经检查以确保文件路径正确,并且文件本身不是空的。一切都很好,但是defo列表总是空的,因此我只能假设问题出在defo=Listbin.Deserializestream;但是我不知道为什么。尝试为每个属性设置[Serializable]属性 所以看起来是这样的: [Serializable()] public class

我正在尝试创建一个可以序列化和反序列化数据的应用程序,我可以序列化信息,但是当我尝试读取信息时,我留下了一个空列表,我不知道为什么

我的序列化类

我的序列化/反序列化方法

我已经检查以确保文件路径正确,并且文件本身不是空的。一切都很好,但是defo列表总是空的,因此我只能假设问题出在defo=Listbin.Deserializestream;但是我不知道为什么。

尝试为每个属性设置[Serializable]属性

所以看起来是这样的:

[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");