2013-03-01 44 views
5

我有一個使用後臺任務的Windows應用商店應用程序。後臺任務存儲在Windows運行時組件項目中。 (這個結構似乎是後臺任務工作的唯一方法。)如何克服Windows組件限制到Windows運行時類型?

在後臺任務項目中,我有一些外部可見的公共方法,它們具有屬於我自己的類而不是Windows運行時類的返回/參數類型。

例如:

public MyClass DoSomething() 
{ 
    return null; 
} 

當我建立時,收到錯誤,如相對於以下這些方法:

方法「X」返回「Y」,這不是一個有效的Windows運行時類型。暴露給Windows運行時的方法必須只返回Windows運行時類型。

方法 'T' 具有類型 'W' 的參數 'U'。 'W'不是有效的Windows運行時參數類型。

我可以理解錯誤在說什麼,但我沒有想到一種好方法,我可以構造我的代碼,以便滿足這些要求。

這裏有一些事情我已經考慮:

  1. 更改後臺任務項目到Windows應用商店的類庫項目。這允許在方法簽名中使用非Windows運行時類型,但後臺任務不再啓動。
  2. 使用便攜式類庫。這不起作用,因爲它無法訪問Windows運行時。
  3. 對於價值類型,我可以將它們分解爲Tuple或多個參數,但這看起來很混亂,結構較差,維護性較差。我強烈反對這種類型的編程。
  4. 對於類,似乎我可能必須在兩個應用程序中複製它們的邏輯。這是一個巨大的可維護性問題。
+1

通過不向我們展示這些方法是什麼樣子,您正在使這個不必要的難以回答。自定義類型需要構建代理,請檢查[此答案](http://stackoverflow.com/a/14802799/17034)。 – 2013-03-01 22:34:01

+0

@HansPassant:謝謝!我編輯了這個問題,使它更清晰一些。 – Sam 2013-03-02 01:21:19

+0

我仍然看不到這些方法是什麼樣子。 – 2013-03-02 01:28:58

回答

6

我能夠通過隔離Windows組件項目中的後臺任務並將可重用的Windows運行時相關代碼移動到Windows Store類庫項目中來完成此項工作。

+0

感謝分享這個解決方案,它完全符合我的情況。我自動生成一些公共的協議緩衝區文件,並默認返回自定義類型,所以它讓編譯器抱怨它。在類庫中分離這些生成的類完全解決了這個問題 – fnicollet 2014-08-05 22:48:39

相關問題