【发布时间】:2013-03-22 21:11:29
【问题描述】:
我想使用来自常规 .NET Framework 类库的源代码构建一个 Windows 应用商店类库。理想情况下,我不想修改原始源代码文件。
在 .NET Framework 库 中的一些源代码文件中,静态成员用于在常规 .NET Framework API 和.NET for Windows Store apps API,但只有 .NET Framework 成员的子集可用于 Windows Store。
一个具体示例是System.IO.Path,其中GetFullPath method 不适用于Windows 应用商店应用。
在我的 Windows 应用商店类库 中合并此方法的替代项并让原始源代码调用此方法是相当简单的。我的问题是,有没有任何方法可以在不修改原始源代码文件的情况下做到这一点?
到目前为止,我还没有找到一个令人满意的解决方案来解决这个问题,但是我已经为我的 Windows Store 类库 解决了这个问题,例如实现了另一个命名空间中的Path.GetFullPath(string) 方法:
namespace WindowsStoreLib.System.IO {
public static class Path {
public static string GetFullPath(string path) { ... }
}
}
然后在原始文件中添加预处理指令:
#if NETFX_CORE
using Path = WindowsStoreLib.System.IO.Path;
#endif
对于这个问题,有没有不需要需要修改原始源代码文件的替代解决方案?
【问题讨论】:
-
制作两个版本的库,一个重新实现所需的东西,另一个只调用本机版本,并根据应用程序的版本包含不同的版本。
-
简短的回答是:不,您不能向现有类添加静态方法。
-
@millimoose 我希望能够在不修改的情况下重用基于 .NET Framework 的库中的原始源代码,例如在这些文件中使用
Path.GetFullPath()。 -
适配器模式可能对您有所帮助。
标签: c# .net windows-runtime windows-store-apps