Я работаю с управляемым API веб-служб Exchange с контактными данными. У меня есть следующий код, который является функциональным, но не идеальным:
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...
}
Как я уже сказал, этот код работает. Теперь я хочу, чтобы это было отстойным немного меньше, если это возможно.
Я не могу найти никаких методов, которые позволяют мне проверить наличие ключа в словаре, прежде чем пытаться получить к нему доступ, и если я попытаюсь прочитать его (с .ToString()
), а он не существует, выдается исключение:
500
Данный ключ отсутствует в словаре.
Как я могу реорганизовать этот код, чтобы он был меньше отстойного (оставаясь при этом работоспособным)?