У меня есть следующий класс:
public class TriGrid
{
private List<HexTile> _hexes;
//other private fields...
//other public proprerties
}
Моя цель - сериализовать только поле _hexes
, поэтому я создал следующий ContractResolver:
internal class TriGridContractResolver : DefaultContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
return new List<MemberInfo> { objectType.GetMember("_hexes", BindingFlags.NonPublic | BindingFlags.Instance)[0] };
}
}
и когда я хочу сериализовать экземпляр TriGrid, я делаю:
var settings = new JsonSerializerSettings()
{
ContractResolver = new TriGridContractResolver()
};
var json = JsonConvert.SerializeObject(someTriGrid, settings);
string strintJson = json.ToString();
но когда я проверяю значение strintJson
, всегда "{}"
. Элемент _hexes
имеет элементы, он не пуст. Если я сериализую один конкретный HexTile
, он работает так, как ожидалось. Что я здесь делаю неправильно?