如何在Windows Phone联系人列表中获取联系人的ID?

问题描述:

我想获得联系人列表应用程序的ID ...目前,我正在使用名为PhoneNumberChooserTask的类,如Chooser Class,但我只获得Number,Name,FullName。等。但如何获得该联系人的ID?如何在Windows Phone联系人列表中获取联系人的ID?

+0

不确定你指的是什么。你能显示你的代码吗? – user424134

+0

Id属性实际上存在,但它是内部的,并且没有办法通过反射来获取它的值(您将获得PropertyAccessException)。 – Nagg

是的,它是可能的,

Contact c = new Contact(); 
var Id = c.GetHashCode(); //gives the Id property value. 
+0

否 - GetHashCode()不保证在每次执行之间(或.NET Framework版本之间)返回相同的值 - 不要使用它来唯一标识联系人,因为它不能保证工作! –

+0

另外,如果您更改联系人的任何属性,则Hashcode会发生变化 - 如果您将其用作UID,则数据库中的每个记录都会在该UID引用特定联系人时发生错误,并且数据会成为孤儿。 –

+1

嗨,史蒂夫,我不确定你说的是什么。但是如果您反混淆了Contact类,则可以看到GetHashCode方法将返回ContactId。从某种意义上说,只有在Windows用户使用谷歌联系人/ Windows Live联系人进行电话数据库重新生成时,您才可能是正确的。 –

你没有什么可以使用该ID的,所以它根本不适合你作为开发者。 (这意味着它不可能

+1

这是如此悲伤,我不明白为什么Id的财产内部,而不是公众。 – Nagg

+1

你是什么意思我跟ID没有关系?我需要它将这个人与另一个实体联系起来。 –

According to this answer GetHashCode返回接触的私有财产ID。我已经证实,在运行Windows Phone 8.1的3个设备(Lumia 620,Lumia 1320,Lumia 925)中,它似乎工作。我更改了联系人详细信息,但ID保持不变。

Uniquely identifying contacts in a Windows Phone Address Book

对于Windows Phone的8.1 ​​RT,你可以只使用contact Id property。 GetHashCode()不再需要。