2010-08-30 42 views
1

我對以下方案的最佳實踐感興趣。我有一個CustomAction方法,它可以訪問一個Web服務並返回一些我用來填充組合框的信息。後來在另一個CustomAction方法的安裝過程中,我需要訪問從第一個Web服務調用返回的一些元數據。Wix:將一個對象從一個CustomAction方法傳遞到另一個 - 最佳實踐?

在第一種方法中,我創建了一個List,它是我的CustomAction類的公共靜態成員。在我的第二種方法中,當我訪問列表時它是空的。

我的想法是使用xaml序列化將其序列化爲會話變量,然後在我的第二個方法中反序列化它。

我在這裏?有沒有更好的辦法?

回答

0

我將假定您的第二個自定義操作正在對機器進行配置更改,並且按照執行順序運行,因爲沒有模擬延期。這意味着它只能訪問CustomActionData屬性。

這意味着您的第一個自定義操作將不得不序列化第二個反序列化的CustomActionData屬性。現在CustomActionData是一個Key:Value集合,你對它做了什麼(包括一個Value是另一個序列化數據類型的Key)完全取決於你。

請務必閱讀DTF文檔,以瞭解如何使用CustomActionData類型和Session類中的成員來獲得優勢。

+0

不,它沒有按照延期運行。這是另一個操作,稍後將在序列中稱爲幾個對話框。我可以很好地訪問會話對象,並且它仍然完全填充。我只是不知道如何存儲一個對象。我只儲存了字符串。 – KnightsArmy 2010-08-30 16:18:41

+1

第二個自定義操作是做什麼的?順便說一句,序列化對象是一個XML片段,它只是一個帶有很多標記的字符串。沒有辦法傳遞實際的對象,因爲您從一個託管應用程序域跨越到非託管代碼,然後返回到新的託管應用程序域。 – 2010-08-30 16:21:59

+0

這就是我對託管與非託管的看法。很高興看到它拼寫出來。我只是確保沒有一個我不知道的技巧。 我有一個組合框填充了自定義位置列表中的身份值和描述。用戶在組合框中選擇位置。之後我需要向用戶提供他們所選位置的默認選項。 – KnightsArmy 2010-08-30 16:38:59

相關問題