【问题标题】:JsonSerializer - serialize static class of vars [duplicate]JsonSerializer - 序列化变量的静态类[重复]
【发布时间】:2012-12-29 00:40:04
【问题描述】:

可能重复:
Serialize a Static Class?

是否可以序列化类如:

public static class Foo
{
    public static int foo1 = 1;
    public static int foo2 = 2;
    public static string foo3 = "test";
}

在 C# 中使用 JsonSerializer 转换成 JSON?

如果我使用:

  JsonWriter jw = new JsonTextWriter(streamWriter)
  JsonSerializer serializer = new JsonSerializer();
  serializer.Serialize(jw, Foo);

出现错误: error CS0118: 'Example.Foo' is a 'type' but is used like a 'variable' 提前感谢您的任何回复。

@更新 序列化静态类是不可能的,但您可以创建此类的静态实例并对其进行序列化。 示例:

    public static FooClass Foo = new FooClass();
    [Serializable]
    public class FooClass : System.Runtime.Serialization.ISerializable
    {
        public FooClass()
        {

        }
        public static int foo1 = 1;
        public static int foo2 = 2;
        public static string foo3 = "test";

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("static.foo1", FooClass.foo1, typeof(int));
            info.AddValue("static.foo2", FooClass.foo2, typeof(int));
            info.AddValue("static.foo3", FooClass.foo3, typeof(string));
        }

        public FooClass(SerializationInfo info, StreamingContext context)
        {
            FooClass.foo1 = info.GetInt32("static.foo1");
            FooClass.foo2 = info.GetInt32("static.foo2");
            FooClass.foo3 = info.GetString("static.foo3");
        }
    }
    ...
    serializer.Serialize(jw, Foo);

【问题讨论】:

标签: c# json class serialization static


【解决方案1】:

或者,如果你不想实现所有的序列化垃圾,你可以只序列化一个匿名类型:

JsonWriter jw = new JsonTextWriter(streamWriter)
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(jw, 
    new {
        foo1 = Foo.foo1,
        foo2 = Foo.foo2,
        foo3 = Foo.foo3
    });

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2013-03-01
    • 2018-08-08
    • 2014-01-03
    相关资源
    最近更新 更多