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

时间:2013-03-01 21:42:26

标签: c# windows-8 windows-store-apps

我有一个使用后台任务的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 个答案:

答案 0 :(得分:6)

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