2012-07-13 40 views
2

我有2個項目 - 一個是Web服務,另一個是查詢該Web服務的Windows移動應用程序。如何爲2個不同的目標平臺創建類

說例如我有一個叫'動物'的類。我想使用web服務將Animal的實例返回給移動設備。問題是移動設備顯然不支持完整的.net框架,而Animal類具有一些需要完整框架的功能。

我最好的選擇是什麼? Animal類實際上只包含文本屬性。我最好將數據解析爲XML消息並將其發送回移動設備(因此實際上不是在移動設備上使用Animal對象?)還是創建2個類,每個平臺一個?

謝謝

+1

創建2個類會嚴重影響可維護性。考慮XML或JSON。 – 2012-07-13 04:24:40

回答

0

您可以在兩個項目之間共享代碼文件。右鍵點擊你的項目,選擇添加 - >現有項目,然後點擊添加按鈕旁邊的向下箭頭,你會看到一個「添加爲鏈接」選項,如果你知道你會爲兩個項目編譯即使他們的目標不同的平臺,你可以使用它來共享這兩個項目的類

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未定義。

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())。

我希望這給你一些想法。

+0

哎呀!我只是意識到你正在問如何傳遞一個對象,而不是兩種環境的代碼。請在您有機會查看此信息後發佈便箋,並讓我知道您是否希望保留該信息或將其刪除。它仍然有用於編碼不同格式的1類的有用信息。 – jp2code 2012-07-13 16:34:05

+0

嗨。感謝您的回覆,雖然我仍然不確定我應該如何做到這一點。所以,我在Web服務上說了一個'Animal'對象。我想將這個對象傳遞迴移動設備。我不想創建2個類(一個是移動版本,另一個與Web服務兼容)。他們的方式是?我知道我可以通過JSON序列化數據,但是當數據到達設備時,數據不會真的成爲同一類的對象 – Lock 2012-07-16 00:26:41

+0

您可能需要編寫類來排除特定於WebServer的事件,然後創建一個從基類派生的特殊的Web服務器類。當你序列化時,只能序列化基類。那有意義嗎? – jp2code 2012-07-16 12:21:17

相關問題