我正在使用新的 Windows Phone 8 应用程序,并尝试列出手机上的联系人。
在调试模式下,我可以在成员(不是扩展名)旁边看到带有蓝色小图标的成员 ID(Contact.Id),但我无法在编程模式下访问该成员,并且在键入 A = Contact 时无法查看它.Id !,并且在 Microsoft 网站上找不到任何关于它事件的文档 我找不到成员:microsoft.phone.userdata.contact.id 这个成员的类型是什么?
我正在使用新的 Windows Phone 8 应用程序,并尝试列出手机上的联系人。
在调试模式下,我可以在成员(不是扩展名)旁边看到带有蓝色小图标的成员 ID(Contact.Id),但我无法在编程模式下访问该成员,并且在键入 A = Contact 时无法查看它.Id !,并且在 Microsoft 网站上找不到任何关于它事件的文档 我找不到成员:microsoft.phone.userdata.contact.id 这个成员的类型是什么?
Id 是 Contact 类的私有/受保护/内部属性。这意味着就 Silverlight 运行时而言,它是不可访问的成员。这意味着您将无法在运行时获得该值。Contact.Id 超出您的范围。
Silverlight 尊重访问级别,仅允许您访问调用代码访问级别中的成员。例如,所有类都可以调用所有其他类的所有公共成员(属性、方法、事件、字段等)。作为另一个示例,只有同一程序集中的类可以调用同一程序集中的类的内部成员。如果该程序集之外的任何类尝试访问内部成员,他们将获得 MemberAccessException。作为最后一个示例,如果一个类声明了私有成员(例如私有字段),那么只有该类可以访问该私有成员。如果另一个类尝试访问类中的私有值,它将收到 MemberAccessException。
以上对于运行时(反射)调用的成员和编译时(硬编码)调用的成员都是正确的。
我才意识到
contact.GetHashCode()
Id
返回与变量窗口向下钻取中看到的属性完全相同的数字。不确定它有多可靠,以及将来它会有多可靠。