2012-12-27 41 views
0

Possible Duplicate:
Serialize a Static Class?JsonSerializer - 類如序列化靜態類瓦爾的

是否有可能連載:

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

成JSON在C#中使用JsonSerializer?

如果我使用:

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); 
+1

當你嘗試過什麼事? –

+1

看看下面的鏈接http://stackoverflow.com/questions/7307100/servicestack-text-how-to-serialize-class-to-json 或http://stackoverflow.com/questions/1056121/how-to -create-json-string-in-c-sharp 或 http://stackoverflow.com/questions/1293496/serialize-a-static-class – MethodMan

+0

錯誤CS0118:'Example.Foo'是'type',但是像'變量'使用: 'serializer.Serialize(jw,Foo);' –

回答

2

或者,如果你不想全部實行系列化的垃圾,你可以只序列化一個匿名類型:

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