我可以在.NET API中向现有类"添加"静态方法吗?

And*_*son 3 .net c# windows-runtime windows-store-apps

我想使用常规.NET Framework 类库中的源代码构建Windows Store 类库.理想情况下,我不想修改原始源代码文件.

.NET Framework库的一些源代码文件中,静态成员使用的是在常规.NET Framework API和.NET for Windows Store应用程序 API中定义的类,但只有一部分. .NET Framework成员可用于Windows应用商店.

一个具体示例是System.IO.Path,其中GetFullPath方法不适用于Windows应用商店应用.

在我的Windows Store类库中合并此方法的替换并使原始源代码调用此方法相当简单.我的问题是,有没有办法在不修改原始源代码文件的情况下做到这一点?

到目前为止,我还没有找到一个令人满意的解决方案来解决这个问题,但是我已经通过在另一个命名空间中实现了例如方法来解决了我的Windows Store类库Path.GetFullPath(string):

namespace WindowsStoreLib.System.IO {
    public static class Path {
        public static string GetFullPath(string path) { ... }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在原始文件中添加预处理程序指令:

#if NETFX_CORE
using Path = WindowsStoreLib.System.IO.Path;
#endif
Run Code Online (Sandbox Code Playgroud)

是否有其他解决这个问题,它要求原始源代码文件的修改?

Mar*_*ell 5

不,你不能,简单地说.

当我在做跨平台的事情时,我倾向于编写一个实用程序类,它具有#if针对不同平台的不同实现(via ) - 然后我的核心代码只调用实用程序类.