バックグラウンドタスクを使用するWindowsストアアプリケーションがあります。バックグラウンドタスクは、Windowsランタイムコンポーネントプロジェクトに保存されます。(この構造は、バックグラウンドタスクを機能させる唯一の方法のようです。)
バックグラウンドタスクプロジェクトには、Windowsランタイムクラスではなく、独自のクラスであるreturn/parameterタイプを持つ外部から見えるパブリックメソッドがいくつかあります。
例えば:
public MyClass DoSomething()
{
return null;
}
ビルドすると、これらのメソッドに関連して次のようなエラーが発生します。
メソッド「X」は「Y」を返しますが、これは有効なWindowsランタイムタイプではありません。Windowsランタイムに公開されるメソッドは、Windowsランタイムタイプのみを返す必要があります。
と
メソッド「T」には、タイプ「W」のパラメータ「U」があります。「W」は有効なWindowsランタイムパラメータタイプではありません。
エラーが何を言っているかは理解できますが、これらの要件を満たすようにコードを構造化するための良い方法を考えていません。
これが私がすでに検討したいくつかのことです:
- バックグラウンドタスクプロジェクトをWindowsストアクラスライブラリプロジェクトに変更します。これにより、メソッドシグネチャでWindows以外のランタイムタイプを使用できるようになりましたが、バックグラウンドタスクは起動されなくなりました。
- ポータブルクラスライブラリを使用する。Windowsランタイムにアクセスできなかったため、これは機能しませんでした。
- 値型の場合、それらを
Tuple
sまたは複数のパラメーターに分割できますが、これは厄介で、構造化されておらず、保守が難しいようです。私はこのタイプのプログラミングに強く反対しています。 - クラスの場合、両方のアプリケーション間でロジックを複製する必要があるようです。これは保守性の大きな問題です。