0

重複の可能性:
静的クラスをシリアル化しますか?

次のようなクラスをシリアル化することは可能ですか?

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' されます: ご回答ありがとうございます。

@Update 静的クラスのシリアル化は不可能ですが、このクラスの静的インスタンスを作成してシリアル化することはできます。サンプル:

    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);
4

1 に答える 1

1

または、すべてのシリアライゼーション ジャンクを実装したくない場合は、匿名型をシリアライズできます。

JsonWriter jw = new JsonTextWriter(streamWriter)
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(jw, 
    new {
        foo1 = Foo.foo1,
        foo2 = Foo.foo2,
        foo3 = Foo.foo3
    });
于 2012-12-28T16:40:04.613 に答える