Je suis en train de travailler avec les Services Web Exchange Managed API, avec des données de contact. J'ai le code suivant, qui est fonctionnel, mais pas idéal:
foreach (Contact c in contactList)
{
string openItemUrl = "https://" + service.Url.Host + "/owa/" + c.WebClientReadFormQueryString;
row = table.NewRow();
row["FileAs"] = c.FileAs;
row["GivenName"] = c.GivenName;
row["Surname"] = c.Surname;
row["CompanyName"] = c.CompanyName;
row["Link"] = openItemUrl;
//home address
try { row["HomeStreet"] = c.PhysicalAddresses[PhysicalAddressKey.Home].Street.ToString(); }
catch (Exception e) { }
try { row["HomeCity"] = c.PhysicalAddresses[PhysicalAddressKey.Home].City.ToString(); }
catch (Exception e) { }
try { row["HomeState"] = c.PhysicalAddresses[PhysicalAddressKey.Home].State.ToString(); }
catch (Exception e) { }
try { row["HomeZip"] = c.PhysicalAddresses[PhysicalAddressKey.Home].PostalCode.ToString(); }
catch (Exception e) { }
try { row["HomeCountry"] = c.PhysicalAddresses[PhysicalAddressKey.Home].CountryOrRegion.ToString(); }
catch (Exception e) { }
//and so on for all kinds of other contact-related fields...
}
Comme je l'ai dit, ce code fonctionne. Maintenant, je veux faire sucer un peu moins, si possible.
Je ne peux pas trouver toutes les méthodes qui me permettent de vérifier l'existence de la clé dans le dictionnaire avant de tenter d'y accéder, et si j'essaie de le lire (avec .ToString()
) et il n'existe pas, une exception est levée:
500
La clé donnée n'était pas présent dans le dictionnaire.
Comment puis-je refactoriser ce code à sucer moins (tout en restant fonctionnelle)?