我如何序列化静态类?

ani*_*kun 0 c# serialization binaryformatter

我需要使用BinaryFormatter序列化静态类,这里是代码:

    void Serialize()
    {
        IFormatter formatter = new BinaryFormatter();

        using (FileStream s = File.Create("ServerInfo.bin"))
            formatter.Serialize(s, Server); // ERROR: Error 44 'Server' is a 'type' but is used like a 'variable'

    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Jon*_*eet 11

您通常会序列化实例.您不能拥有静态类的实例,因此序列化它是没有意义的.

如果您需要序列化静态类的静态状态,那么您应该首先使其成为非静态类.如果你真的需要保持静态类静态但序列化静态,你可以创建一个具有相同变量的普通类(但是实例变量而不是静态变量),并在静态类中创建方法以从当前创建实例静态,或者根据传入的实例替换当前的静态.但从根本上说这样做并不是非常令人愉快......

  • 答案重复:http://stackoverflow.com/a/1293522/1541819 ;-) (6认同)
  • 模拟静态类的一种相当好的方法是通过单例实现它.这会将类保留为实例,但只保证它的一个副本.这样,您将能够序列化它并以类似于静态类的方式访问它(尽管通过静态引用) (2认同)