Ich arbeite mit der von Exchange Web Services verwalteten API mit Kontaktdaten. Ich habe den folgenden Code, der funktionsfähig , aber nicht ideal ist:
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 funktioniert . Jetzt möchte ich es , wenn möglich, etwas weniger lutschen lassen .
Ich kann keine Methoden finden, mit denen ich überprüfen kann, ob der Schlüssel im Wörterbuch vorhanden ist, bevor ich versuche, darauf zuzugreifen. Wenn ich versuche, ihn (mit .ToString()
) zu lesen und er nicht vorhanden ist, wird eine Ausnahme ausgelöst:
500
Der angegebene Schlüssel war im Wörterbuch nicht vorhanden.
Wie kann ich diesen Code umgestalten, um weniger zu saugen (während ich noch funktionsfähig bin)?
TryGetValue
Ansatz scheint die beste Wahl zu sein , da ich diese Seite gefunden habe: goo.gl/7YN6 ... aber ich bin mir nicht sicher, wie ich ihn verwenden soll. In meinem obigen Coderow
befindet sich ein 'DataRow'-Objekt, daher bin ich mir nicht sicher, ob Ihr Beispielcode richtig ist ...