如何为2个不同的目标平台创建类

时间:2012-07-13 04:19:38

标签: c# visual-studio windows-mobile

我有2个项目 - 一个是Web服务,另一个是查询该Web服务的Windows移动应用程序。

比方说我有一个名为'Animal'的课程。我想使用webservice将Animal的实例返回给移动设备。问题是移动设备显然不支持完整的.net框架,而Animal类有一些需要完整框架的功能。

这里有什么最好的选择? Animal类实际上只包含只是文本的属性。我最好将数据解析为XML消息并将其发送回移动设备(因此实际上不是在移动设备上使用Animal对象吗?)或者我是否创建了2个类,每个平台一个?

由于

2 个答案:

答案 0 :(得分:0)

您可以在两个项目之间共享代码文件。右键单击您的项目,选择Add - >现有项目,然后单击“添加”按钮旁边的向下箭头,您将看到“添加为链接”选项,如果您知道您的类将为两个项目编译,即使它们针对不同的平台,您也可以使用它来共享两个项目的类

答案 1 :(得分:0)

我使用相同的代码运行Windows和Mobile。

移动设备在项目的属性中定义了单词PocketPC,因此,您所要做的就是(因为您使用C#编码):

public static bool CreateDirectoryWithPermission(string path) {
  bool ok = false;
  DirectoryInfo dir = new DirectoryInfo(path);
#if !PocketPC
  try {
    DirectorySecurity ds;
    if (dir.Exists) {
      ds = dir.GetAccessControl();
    } else {
      ds = dir.Parent.GetAccessControl();
    }
    string user = Environment.UserDomainName + @"\" + Environment.UserName;
    FileSystemAccessRule rule = new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow);
    ds.AddAccessRule(rule);
    dir.Create(ds);
    ok = true;
  } catch (Exception) { }
#endif
  if (!ok) {
    try {
      dir.Create();
      ok = true;
    } catch (Exception) { }
  }
  return ok;
}

如果我没记错,System.Security.AccessControl未在Windows Mobile中定义,因此DirectorySecurity未定义。

更新:

以下是您感兴趣的另一种方法:在完全独立的命名空间中创建Serializable类,在两个项目中使用该命名空间,并将序列化数据从Webservice传递到Mobile设备。我也这样做,但还有更多的代码。

namespace LocksAnimal {

  [Serializable()]
  public class Animal {

    private string name;

    public Animal() {
      name = "Lock";
    }

    public string GetName() {
#ifdef PocketPC
      return name + " (Mobile Version)";
#else
      return name + " (Webservice Version)";
#endif
    }

  }

}

Webservice版本当然可以访问更详细的信息(如第一个代码段中显示的GetAccessControl())。

我希望这会给你一些想法。

相关问题