Ich arbeite mit der Exchange Web Services Managed API, mit Kontaktdaten. Ich habe den folgenden Code, der lautet funktionell , aber nicht ideal:
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...
}
Wie gesagt, dieser Code Werke . Jetzt möchte ich es zum Kotzen finden ein bisschen weniger wenn möglich.
Ich kann keine Methoden finden, die es mir erlauben, das Vorhandensein des Schlüssels im Wörterbuch zu überprüfen, bevor ich versuche, darauf zuzugreifen, und wenn ich versuche, ihn zu lesen (mit .ToString()
) und es existiert nicht, wird eine Ausnahme ausgelöst:
500
Der angegebene Schlüssel war im Wörterbuch nicht vorhanden.
Wie kann ich diesen Code so umgestalten, dass er weniger nervt (und trotzdem noch funktioniert)?