1
是否有可能讓JavaScriptSerializer在沒有setter的情況下也填充屬性?例如,下面代碼中的屬性如test.ID。是否有可能讓JavaScriptSerializer在沒有setter的情況下也填充屬性?
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace JavaScriptConverterTest
{
class Program
{
static void Main(string[] args)
{
List<test> list = new List<test>();
for (int i = 0; i < 2; i++)
{
list.Add(new test(Guid.NewGuid(), "Item #" + i));
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(list);
List<test> newList = serializer.Deserialize<List<test>>(jsonString);
Console.Read();
}
}
class test
{
private Guid id = Guid.Empty;
public Guid ID
{
get { return id; }
// Without a setter, JavaScriptSerializer doesn't populate this property.
// set { id = value; }
}
public string name = "";
public test()
{
}
public test(Guid id, string name)
{
this.id = id;
this.name = name;
}
}
}
[忽略] StackOverflow上需要更多的細節。
如果你製作私人設置器,一些序列化將會起作用。其他序列化器允許您使用屬性,以便它可以直接寫入字段,繞過該屬性。我不知道這個如何工作。 –
@JonathanAllen,謝謝,很高興知道,但現在我正在尋找使用C#內置序列化器的解決方案(實際上它不一定是JSON) – agou
我正在談論內置的解決方案。不幸的是,微軟這麼多年來做了這麼多,我無法讓他們分開我的腦海。所以我能提供的最好的是在文檔中尋找什麼。 –