非常に単純な例 (私は単体テストでこれを使用しています):
private interface ISampleSubset
{
int id { get; }
}
private class Sample : ISampleSubset
{
public int id { get; set; }
public string name { get; set; }
}
以下は、NewtonSoft の JSON Serialize の小さなラッパーです。
public string Serialize<T>(T t)
{
using (var sw = new StringWriter())
{
using (var jw = new JsonTextWriter(sw))
{
var js = JsonSerializer.Create();
js.Serialize(jw, t);
jw.Flush();
}
return sw.GetStringBuilder().ToString();
}
}
今、私は ISampleSubset をシリアライズしたいと思います: そして、次のように呼び出します:
ISampleSubSet t = new Sample()
{
id = 1,
name = "joe"
};
string json = Serialize(t);
私は得ることを期待しています
{"id":1}
しかし、代わりに私は得る
{"id":1,"name":"joe"}
私は、js.Serializeがリフレクションを使用して、インターフェースの「外側」のオブジェクトの他のプロパティを「見る」と推測しています。インターフェイスのこれらのプロパティだけに制限するにはどうすればよいですか?