代码之家  ›  专栏  ›  技术社区  ›  Manuel Hoffmann

为什么我不能访问HasPicture属性?

  •  0
  • Manuel Hoffmann  · 技术社区  · 7 年前

    我试图用C应用程序管理联系人对象。

    我正在用BindToItems加载联系人:

    ServiceResponseCollection<GetItemResponse> responses = service.BindToItems(itemIds, PropertySet.FirstClassProperties);
    foreach (var responseItem in responses)
    {
        contactDict.Add(responseItem.Item.Id, (Contact)responseItem.Item);
    }
    

    然后,我尝试通过将其属性与存储的值进行比较来检查联系人是否已更改。

             return exchangeContact.Surname != user.Surname
                 || exchangeContact.CompanyName != user.Company
                 ...
                 || (!exchangeContact.HasPicture && user.ThumbnailPhoto != null)
    

    但是,当我尝试访问HasPicture属性时,抛出了一个异常。

    ServiceObjectPropertyException: This property was requested, but it wasn't returned by the server.
    

    签入调试器时,也会为的其他属性引发此异常 Microsoft.Exchange.WebServices.Data.Contact . 例如:

    • 接触源
    • 图标索引
    • 标准化体
    • 文本正文
    • 上市后指数

    为什么我不能访问这些属性?它们不包括在FirstClassProperties中吗?但是 this article 表示HasImage是Contact对象的FirstClassProperty。

    1 回复  |  直到 7 年前
        1
  •  2
  •   MadDev    7 年前

    继BastianW评论之后,您可以使用 Contact.TryGetProperty 方法

    bool HasPicture;
    exchangeContact.TryGetProperty(ContactSchema.HasPicture, out HasPicture);