Ho sollevato questo problema sul progetto github per RazorJam.Insightly
, dove come puoi vedere scopre che si sta verificando un errore perché per gli elementi specifici che sto recuperando e deserializzando da JSON in un oggetto, il valore ADDRESS_ID
è troppo grande per rientrare in un int
.
Inizialmente desideravo inviare una richiesta di modifica che modificasse tutti i campi Id
che ho trovato per digitare string
o long
, ma non ero sicuro di quale sarebbe il migliore.
Poi c'è anche la possibilità di controllare prima la lunghezza e poi assegnarla in base all'opportunità o meno di adattarsi a Int32
, ma forse questa non è l'opzione migliore in quanto aggiunge più codice e probabilmente influisce sulle prestazioni.
Tuttavia, poiché altre persone potrebbero utilizzare questo codice, la modifica del tipo potrebbe interrompere i loro progetti se si basano su un valore di int
, quindi forse il controllo è l'opzione migliore?
Ovviamente posso solo salvare una copia locale e apportare qualsiasi modifica voglia, ma sembra che sia meglio avere una versione pubblica che funzioni per tutti.
Illustrazione semplice
Implementazione corrente
[JsonProperty(PropertyName = "ADDRESS_ID", NullValueHandling = NullValueHandling.Ignore)]
public int Id { get; set; }
Opzione 1
[JsonProperty(PropertyName = "ADDRESS_ID", NullValueHandling = NullValueHandling.Ignore)]
public string Id { get; set; }
o
[JsonProperty(PropertyName = "ADDRESS_ID", NullValueHandling = NullValueHandling.Ignore)]
public long Id { get; set; }
Opzione 2
private object _id;
[JsonProperty(PropertyName = "ADDRESS_ID", NullValueHandling = NullValueHandling.Ignore)]
public object Id
{
get { return _id; }
set { _id = (long)value > int.MaxValue ? (long)value : (int)value; } }
}
Qualcuno ha qualche pensiero o consiglio su cui possono condividere questo? Qualsiasi aiuto è molto apprezzato e scusa se questo è il forum sbagliato per questo!