为什么WP8 Tiles示例使用反射?

本文关键字:反射 WP8 Tiles 为什么 | 更新日期: 2023-09-27 17:49:51

使用新的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会出错?如果VM永远不会访问这部分代码,那还不够好吗?

为什么WP8 Tiles示例使用反射?

你可以将应用定位于WP7或WP8平台之一。

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

但是你可以在WP8设备上运行你的WP7应用,所以你可以使用反射创建王尔德瓷砖。您只需要检查操作系统版本,然后:

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

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

在WP7 SDK中没有这些新的Tile类型的API,它们只在WP7.8和WP8中可用。所以如果你想在WP7.8设备上使用新的平铺大小,或者在WP8设备上运行的WP7应用程序,你必须使用反射。当然,在WP8应用程序中,你可以直接使用API,没有问题。