Ciao a tutti,
Volevo chiedervi un consiglio su come agite voi di solito.
Durante la costruzione di una applicazione web capita spesso di dover costruire oggetti specializzati che ti aiutano ad eseguire dei compiti.
Nello specifico utilizzo il servizio di here per mappe e geolocalizzazione.
Prendendo come esempio un metodo che permette di ritornare la localizzazione dato un indirizzo, mi viene difficile impostare in un modo ordinato la classe.
Di fatto a me serve che la classe "here" esponga il metodo e che ritorni l'oggetto ottenuto dal decode json.
Quello che ho fatto è stato creare la classe, creare il metodo (a cui poi si aggiungeranno tutti gli altri)
e nello stesso file creare le classi che compongono il jsonresult per effettuare il decode.
Funziona, ma mi pare veramente poco ordinato e organizzato.
Voi come gestite queste situazioni?
public class Here
{
public async Task<HereGeocode> GetGetHereGeocodeFromAddress(string address)
{
string url = "https://geocode.search.hereapi.com/v1/geocode?&q=" + address + "&apiKey=XXXX";
var client = new HttpClient();
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string rawData = await response.Content.ReadAsStringAsync();
var hereObj = JsonConvert.DeserializeObject<HereGeocodeList>(rawData);
return hereObj.items[0];
}
}
#region HereObject
public class Address
{
public string label { get; set; }
public string countryCode { get; set; }
public string countryName { get; set; }
public string state { get; set; }
public string county { get; set; }
public string city { get; set; }
public string district { get; set; }
public string street { get; set; }
public string postalCode { get; set; }
public string houseNumber { get; set; }
}
public class Position
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Access
{
public double lat { get; set; }
public double lng { get; set; }
}
public class MapView
{
public double west { get; set; }
public double south { get; set; }
public double east { get; set; }
public double north { get; set; }
}
public class HereGeocode
{
public string title { get; set; }
public string id { get; set; }
public string resultType { get; set; }
public string houseNumberType { get; set; }
public Address address { get; set; }
public Position position { get; set; }
public List<Access> access { get; set; }
public MapView mapView { get; set; }
}
public class HereGeocodeList
{
public List<HereGeocode> items { get; set; }
}
#endregion
}