我有一个使用后台任务的Windows应用商店应用程序.后台任务存储在Windows运行时组件项目中. (这种结构似乎是使后台任务有效的唯一方法.)在后台任务项目中,我有一些外部可见的公共方法,它们的返回/参数类型是我自己的...
![](https://oss.womengda.net/imgfile/2309/1E39A544045F-19342.jpg)
我有一个使用后台任务的Windows应用商店应用程序.后台任务存储在Windows运行时组件项目中. (这种结构似乎是使后台任务有效的唯一方法.)
在后台任务项目中,我有一些外部可见的公共方法,它们的返回/参数类型是我自己的类而不是Windows运行时类.
例如:
public MyClass DoSomething()
{
return null;
}
当我构建时,我会收到与以下方法相关的错误:
Method ‘X’ returns ‘Y’, which is not a valid Windows Runtime type. Methods exposed to Windows Runtime must return only Windows Runtime types.
和
Method ‘T’ has parameter ‘U’ of type ‘W’. ‘W’ is not a valid Windows Runtime parameter type.
我可以理解错误的含义,但我没有想到一个好的方法,我可以构建我的代码,以便我满足这些要求.
以下是我已经考虑过的一些事情:
>将后台任务项目更改为Windows应用商店类库项目.这允许在方法签名中使用非Windows运行时类型,但后台任务不再启动.
>使用便携式类库.这不起作用,因为它无法访问Windows运行时.
>对于值类型,我可以将它们分解为元组或多个参数,但这看起来很混乱,结构化程度较低,维护较少.我坚决反对这种类型的编程.
>对于类,似乎我可能必须在两个应用程序中复制它们的逻辑.这是一个巨大的可维护性问题.
解决方法:
通过隔离Windows组件项目中的后台任务并将可重复使用的Windows运行时相关代码移动到Windows应用商店类库项目中,我能够完成这项工作.
本文标题为:c# – 如何克服Windows运行时类型的Windows组件限制?
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- .NET CORE DI 依赖注入 2023-09-27
- Oracle中for循环的使用方法 2023-07-04
- 如何使用C# 捕获进程输出 2023-03-10
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- user32.dll 函数说明小结 2022-12-26
- Unity3D实现渐变颜色效果 2023-01-16
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity Shader实现模糊效果 2023-04-27
- c# 模拟线性回归的示例 2023-03-14