0

使用新的 WP8 Tiles 使用反射而不是直接实例化和调用方法,如下所示。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj720574(v=vs.105).aspx

Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");

shellTileType.GetMethod("Update").Invoke(tileToUpdate, new Object[] { UpdateTileData });

我想知道在这种情况下使用反射是否有特定原因。是否导致 WP < 7.8 没有对 ShellTile 类型的引用,因此 VM 会出错?如果虚拟机从不访问这部分代码,那还不够好吗?

4

2 回答 2

2

您可以将您的应用程序定位到 WP7 或 WP8 平台之一。

在 WP7 SDK 中没有FlipTileData类,因此您将无法编译使用此类的代码。

但是您可以在 WP8 设备上运行您的 WP7 应用程序,因此您可以使用反射创建 Wilde Tiles。您只需要在之前检查操作系统版本:

private static Version TargetedVersion = new Version(8, 0);
public static bool IsTargetedVersion 
{
   get
     {
       return Environment.OSVersion.Version >= TargetedVersion;
     }
 }

否则,如果您的应用程序仅针对 WP8 平台 - 请随意使用FlipTileData其他类而无需反射。在这里您可以找到示例。

于 2012-12-27T08:04:05.757 回答
1

在 WP7 SDK 中,这些新的 Tile 类型没有 API,它们仅在 WP7.8 和 WP8 中可用。因此,如果您想在 WP7.8 设备上或在 WP8 设备上运行的 WP7 应用程序中使用新的磁贴尺寸,则必须使用反射。
当然,在 WP8 应用程序中,您可以直接使用 API 没有任何问题。

于 2012-12-27T11:55:29.853 回答