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

时间:2012-12-27 06:56:50

标签: c# reflection windows-phone

使用新的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永远不会访问这部分代码就不够好了吗?

2 个答案:

答案 0 :(得分: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和其他类而无需反思。 Here你可以找到这个例子。

答案 1 :(得分:1)

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