我有2个项目 - 一个是Web服务,另一个是查询该Web服务的Windows移动应用程序。
比方说我有一个名为'Animal'的课程。我想使用webservice将Animal的实例返回给移动设备。问题是移动设备显然不支持完整的.net框架,而Animal类有一些需要完整框架的功能。
这里有什么最好的选择? Animal类实际上只包含只是文本的属性。我最好将数据解析为XML消息并将其发送回移动设备(因此实际上不是在移动设备上使用Animal对象吗?)或者我是否创建了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()
)。
我希望这会给你一些想法。