我有2個項目 - 一個是Web服務,另一個是查詢該Web服務的Windows移動應用程序。如何爲2個不同的目標平臺創建類
說例如我有一個叫'動物'的類。我想使用web服務將Animal的實例返回給移動設備。問題是移動設備顯然不支持完整的.net框架,而Animal類具有一些需要完整框架的功能。
我最好的選擇是什麼? Animal類實際上只包含文本屬性。我最好將數據解析爲XML消息並將其發送回移動設備(因此實際上不是在移動設備上使用Animal對象?)還是創建2個類,每個平臺一個?
謝謝
我有2個項目 - 一個是Web服務,另一個是查詢該Web服務的Windows移動應用程序。如何爲2個不同的目標平臺創建類
說例如我有一個叫'動物'的類。我想使用web服務將Animal的實例返回給移動設備。問題是移動設備顯然不支持完整的.net框架,而Animal類具有一些需要完整框架的功能。
我最好的選擇是什麼? Animal類實際上只包含文本屬性。我最好將數據解析爲XML消息並將其發送回移動設備(因此實際上不是在移動設備上使用Animal對象?)還是創建2個類,每個平臺一個?
謝謝
您可以在兩個項目之間共享代碼文件。右鍵點擊你的項目,選擇添加 - >現有項目,然後點擊添加按鈕旁邊的向下箭頭,你會看到一個「添加爲鏈接」選項,如果你知道你會爲兩個項目編譯即使他們的目標不同的平臺,你可以使用它來共享這兩個項目的類
我使用相同的代碼運行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
未定義。
UPDATE:
這裏是另一種方式,做你所感興趣的東西:在一個完全不同的命名空間創建一個Serializable類,使用該命名空間中的兩個項目,並從WebService傳遞序列化的數據移動設備。我也是這樣做的,但是有更多的代碼。
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
}
}
}
web服務版本,當然,可以訪問更詳細的信息(如在第一代碼段示出GetAccessControl()
)。
我希望這給你一些想法。
哎呀!我只是意識到你正在問如何傳遞一個對象,而不是兩種環境的代碼。請在您有機會查看此信息後發佈便箋,並讓我知道您是否希望保留該信息或將其刪除。它仍然有用於編碼不同格式的1類的有用信息。 – jp2code 2012-07-13 16:34:05
嗨。感謝您的回覆,雖然我仍然不確定我應該如何做到這一點。所以,我在Web服務上說了一個'Animal'對象。我想將這個對象傳遞迴移動設備。我不想創建2個類(一個是移動版本,另一個與Web服務兼容)。他們的方式是?我知道我可以通過JSON序列化數據,但是當數據到達設備時,數據不會真的成爲同一類的對象 – Lock 2012-07-16 00:26:41
您可能需要編寫類來排除特定於WebServer的事件,然後創建一個從基類派生的特殊的Web服務器類。當你序列化時,只能序列化基類。那有意義嗎? – jp2code 2012-07-16 12:21:17
創建2個類會嚴重影響可維護性。考慮XML或JSON。 – 2012-07-13 04:24:40