ASP.NET 2.0移动开发之定义设备筛选器(3)

基于鉴别委托的筛选器的具体实现过程
  现在我们将创建一个针对不同的移动设备显示不同类型图片的应用程序。而在本示例中,我们针对的四种不同的移动设备分别是使用HTML标记语言的大屏幕设备(例如Pocket PC)、使用HTML标记语言的小屏幕移动设备(例如i-mode)、使用WML标记语言的大屏幕移动设备(例如Ericsson R380)以及使用WML语言的小屏幕设备(例如Openwave)。为此,所创建的移动应用程序需根据请求页面的移动设备发送合适的图片文件,以便达到最好的显示效果。现在我们将所有的图片分成四种不同的格式,分别为小型的GIF图片、大型的GIF图片、小型的WBMP图片以及大型的WBMP图片。为了使程序可以区分这四种不同的图片格式,我们需要定义四个设备筛选器,具体的说明如下:

  ■ 使用大型的GIF图片:如果该设备支持GIF图片格式且屏幕较大,则返回true值

  ■ 使用小型的GIF图片:如果该设备支持GIF图片格式且屏幕较小,则返回true值

  ■ 使用大型的WBMP图片:如果该设备支持WBMP图片格式且屏幕较大,则返回true值

  ■ 使用小型的WBMP图片:如果该设备支持WBMP图片格式且屏幕较小,则返回true值

  为了检测这些不同格式的文件以及移动设备的屏幕大小,我们需要在程序代码中使用MobileCapabilities对象的两个属性:PreferredImageMime和ScreenPixelsWidth。现在我们就来创建和基于鉴别委托的筛选器相关联的程序集,首先启动Visual Stduio并执行如下的步骤:

  1、首先选择"文件"-"新建项目"命令,在弹出的新建项目窗口中创建一个"类库"项目,并为该项目命名为MyEvaluators,点击"确定"按钮。

  2、项目创建完毕后,右键点选位于解决方案资源管理器中的"Class1.cs"文件,选择"重命名"命令,将其文件名改为"CustomEvals.cs"。

  3、由于我们在方法中要使用MobileCapabilities类型的对象作参数,所有我们需要在该项目中添加一个包含MobileCapabilities类的程序集引用。在解决方案资源管理器中点击右键,在弹出的菜单中选择"添加引用"命令。在"添加引用"窗口的".NET"选项卡列表中找到"System.Web.Mobile"后双击该项,这时在解决方案资源管理器中的"引用"节点出就会新添加System.Web.Mobile子节点。

  4、由于MobileCapabilities是派生自System.Web程序集中的System.Web.HttpBrowserCapabilities,为此我们以上面相同的方式在".NET"选项卡列表中添加System.Web程序集的引用。

  5、在代码试图的上方添加一行代码"using System.Web.Mobile",这样我们就可以在后续的编码过程中不再需要输入MobileCapabilities类的完整名称。上面的这一切都为此后,在代码编辑窗口中输入如下的用来定义静态方法的代码:
+展开
-C#
using System;
using System.Web.Mobile;
namespace MSPress.MobWeb.MyEvaluators
{
public class CustomEvals
{
public static bool UseSmallGif(
MobileCapabilities caps, 
String notused)
{
bool retval = false;
if (caps.PreferredImageMime == "image/gif" && 
(caps.ScreenPixelsWidth < 100))
retval = true;
return retval;
}
//如果该设备支持GIF图片格式且屏幕较小,返回true

public static bool UseLargeGif(
MobileCapabilities caps, 
String notused)
{
bool retval = false;
if (caps.PreferredImageMime == "image/gif" && 
!(caps.ScreenPixelsWidth < 100))
retval = true;
return retval;
}
//如果该设备支持GIF图片格式且屏幕较大,返回true

public static bool UseSmallWBMP(
MobileCapabilities caps, 
String notused)
{
bool retval = false;
if (caps.PreferredImageMime == "image/vnd.wap.wbmp" && 
(caps.ScreenPixelsWidth < 100))
retval = true;
return retval;
}
//如果该设备支持WBMP图片格式且屏幕较小,返回true

public static bool UseLargeWBMP(
MobileCapabilities caps, 
String notused)
{
bool retval = false;
if (caps.PreferredImageMime == "image/vnd.wap.wbmp" && 
!(caps.ScreenPixelsWidth < 100))
retval = true;
return retval;
}
//如果该设备支持WBMP图片格式且屏幕较大,返回true
}
}


  保存后,选择"生成"-"生成MyEvaluators"命令。这时会在该项目目录下的/bin/debug文件夹中生成一个名为MyEvaluators.dll的程序集。

加支付宝好友偷能量挖...


评论(0)网络
阅读(127)喜欢(0)Asp.Net/C#/WCF