Я співпрацюю з 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
Даного ключа в словнику не було.
Як я можу Refactor цього коду менше смоктати (поки він функціонує)?
TryGetValue
Підхід здається , що це може бути кращим вибором, так як я знайшов цю сторінку: goo.gl/7YN6 ... але я не знаю , як використовувати його. У моєму коді вищеrow
- об’єкт "DataRow", тому я не впевнений, що ваш приклад код правильний, хоча ...