連絡先データを使用して、Exchange WebサービスマネージAPIを操作しています。次のコードがあります。これは機能的ですが、理想的ではありません。
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
指定されたキーは辞書に存在しませんでした。
このコードをリファクタリングして、(機能している間)吸う量を減らすにはどうすればよいですか?
TryGetValue
このページはgoo.gl/7YN6 ... であるので、この方法が最善の策であるように見えますが、使用方法がわかりません。上記の私のコードでrow
はは 'DataRow`オブジェクトなので、サンプルコードが正しいかわかりませんが...