gpt4 book ai didi

c# - 为什么 Path.GetFileName(string) 返回完整路径?

转载 作者:行者123 更新时间:2023-11-30 14:27:48 26 4
gpt4 key购买 nike

我已经创建了一个 PCL(可移植类库)来为我的应用程序做一些日志记录,并且有以下方法:

public static void EnterPage([CallerFilePath]string memberName = "")
{
var file = System.IO.Path.GetFileName(memberName);
Track(file);
}

其中 memberName = "d:\\teamFoundation\\MyApp\\MyApp-Reporting\\MyApp.Core\\App.cs"

GetFileName 返回完整路径 - d:\\teamFoundation\\MyApp\\MyApp-Reporting\\MyApp.Core\\App.cs 而不是 App.cs

这对 PCL 不起作用有什么原因吗?我目前正在我的 Android 设备上运行

最佳答案

在 Windows 上,Path 分隔符是 \,但这与 Android 不同

来自android documentation你可以看到分隔符实际上是 / 这与 iOS 相同

memberName 的值在编译时传递,因此取决于您构建解决方案的机器类型。其中对 System.IO.Path.GetFileName 的调用是在运行时完成的。

因此,要解决此问题,您必须替换文件路径中的分隔符:

public static void EnterPage([CallerFilePath]string memberName = "")
{
char seperatorChar = (char)typeof(System.IO.Path).GetTypeInfo().GetDeclaredField("DirectorySeparatorChar").GetValue(null);
var file = System.IO.Path.GetFileNameWithoutExtension(memberName.Replace('\\', seperatorChar));
Track(file);
}

关于c# - 为什么 Path.GetFileName(string) 返回完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com