如何克服Windows运行时类型的Windows组件限制?

Sam*_*Sam 5 c# windows-8 windows-store-apps

我有一个使用后台任务的Windows应用商店应用程序.后台任务存储在Windows运行时组件项目中.(这种结构似乎是使后台任务有效的唯一方法.)

在后台任务的项目,我有有一个是我自己的类,而不是Windows运行时类的回报/参数类型的一些外部可见的公共方法.

例如:

public MyClass DoSomething()
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

当我构建时,我会收到与以下方法相关的错误:

方法'X'返回'Y',它不是有效的Windows运行时类型.暴露给Windows运行时的方法必须仅返回Windows运行时类型.

方法'T'具有'W'类型的参数'U'.'W'不是有效的Windows运行时参数类型.

我可以理解错误的含义,但我没有想到一个好的方法,我可以构建我的代码,以便我满足这些要求.

以下是我已经考虑过的一些事情:

  1. 将后台任务项目更改为Windows应用商店类库项目.这允许在方法签名中使用非Windows运行时类型,但后台任务不再启动.
  2. 使用便携式类库.这不起作用,因为它无法访问Windows运行时.
  3. 对于值类型,我可以将它们分解为Tuples或多个参数,但这看起来很混乱,结构化程度较低且可维护性较差.我坚决反对这种类型的编程.
  4. 对于类,似乎我可能必须在两个应用程序中复制它们的逻辑.这是一个巨大的可维护性问题.

Sam*_*Sam 6

通过隔离Windows组件项目中的后台任务并将可重复使用的Windows运行时相关代码移动到Windows应用商店类库项目中,我能够完成这项工作.