【发布时间】:2012-12-29 00:40:04
【问题描述】:
是否可以序列化类如:
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);
【问题讨论】:
-
你尝试的时候发生了什么?
-
error CS0118: 'Example.Foo' 是一个 'type' 但像'variable' 一样使用:
serializer.Serialize(jw, Foo); -
你的“更新”应该是一个答案(然后你可以接受)
-
如果@CharlieHopperson 发布答案并接受,我们可以重新打开问题。
标签: c# json class serialization static