Json.Net não pode serializar a propriedade de uma classe derivada do dicionário
Eu tenho uma classe que é derivada do dicionário. Além disso, a própria classe tem umClientId
propriedade. Eu quero desserializar a coleção desta classe na string JSON usandoJson.Net
Então segui a documentaçãoaqui
public interface IClientSettings: IDictionary<string, string>
{
string ClientId { get; set; }
}
public class ClientSettings : Dictionary<string, string>, IClientSettings
{
public string ClientId { get; set; }
}
e então estou desserializando a lista em string
var list = new List<IClientSettings>();
var client1 = new ClientSettings();
client1.ClientId = "Client1";
client1.Add("key1", "value1");
client1.Add("key2", "value2");
client1.Add("key3", "value3");
var client2 = new ClientSettings();
client1.ClientId = "Client2";
client2.Add("key1", "value1");
client2.Add("key2", "value2");
client2.Add("key3", "value3");
list.Add(client1);
list.Add(client2);
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
Console.WriteLine(json);
No entanto, isso não serializaClientid
propriedade. Abaixo está a saída.
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
]
Não tenho certeza do que estou perdendo aqui. Eu também encontrei sugestõesaqui que sugerem fazer serialização personalizada, essa é a única opção que tenho?