我有一个类,其中的属性
具有私有setter,我希望这些属性能够使用Json.Net
进行反序列化。我知道可以使用[JsonProperty]
属性来完成此操作,但我想通过实现DefaultContractResolver
来实现这一点。
以下是我一直在使用的示例代码,但这并不起作用。
static void Main(string[] args)
{
var a = new a();
a.s = "somestring";
a.set();
Console.WriteLine(JsonConvert.SerializeObject(a));
var strrr = JsonConvert.SerializeObject(a);
var strobj = JsonConvert.DeserializeObject<a>(strrr,new JsonSerializerSettings
{
ContractResolver = new PrivateSetterContractResolver()
});
Console.Read();
}
这是我想要序列化的类
public class a
{
private int test;
public int Test
{
get { return test; }
private set { test = value; }
}
public string s { get; set; }
public void set()
{
test = 33;
}
}
这是DefaultContractResolver
的实现。
public class PrivateSetterContractResolver : DefaultContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
// whait do i do here ???
//this dosent work
return new List<MemberInfo>(objectType.GetProperties().ToList());
}
}