【问题标题】:How can I return C# class file path如何返回 C# 类文件路径
【发布时间】:2017-10-18 04:36:32
【问题描述】:

我正在尝试检索任何给定类的单个文件路径。例如,我在以下文件路径中有 AuthorizeOverrideBalancingPopup.cs 类:

C:\development\pom\PageObjectModel\PageObjects\Panel\AuthorizeOverrideBalancingPopup.cs

我可以使用任何 C# 方法来返回完整的文件路径吗?似乎大多数其他类似的问题都返回 IDE 的目录而不是类本身,它位于完全不同的目录中。

【问题讨论】:

  • 我不明白你的问题。您在一个项目中有一些代码扫描另一个项目中的代码以查找特定类,它应该返回该类所在文件的绝对路径?
  • 也许你可以解释一下你为什么要这样做,可能有更好的方法来解决这个问题
  • 我认为您的 .cs 文件将在您构建项目时被编译成单个 .dll 文件 - 因此确定每个类的文件路径的实用程序可能会丢失。跨度>
  • @JonahOberloh 但是为什么你想要那个?我想不出一个为什么需要这样做的单一原因......
  • 我寻找这个的原因是为了能够从路径中抓取类名并为每个给定的测试创建一个新文件夹。我将调用此方法的类是测试类。在测试类文件夹中,我计划存储多个在 Selenium UI 测试失败时拍摄的屏幕截图,以用于调试目的。我问这个问题的原因是有一种方法可以为 Selenium 中的屏幕截图方法生成文件路径,这是我现在能想到的唯一方法。

标签: c#


【解决方案1】:

您可以使用CallerFilePath 属性:

static void Main(string[] args)
{
    Console.WriteLine(GetPath());
    Console.Read();
}

static string GetPath([CallerFilePath]string fileName = null)
{
    return fileName;
}

【讨论】:

  • 这将返回我正在寻找的内容。谢谢@logix。
【解决方案2】:

您的程序将在这些文件不存在的地方运行。它们被编译成一个exe 文件,并且不随代码“附带”。

这里的另一个答案是指代码在编译时(参见MSDN),当文件在目标机器上执行时不会出现。 (虽然也许这就是你要找的东西?)

根据您的评论进行编辑(“然后能够刮取类名”)

使用 this.GetType().Nametypeof(Class1).Namenameof(Class1) [来自 C# 6]

【讨论】:

  • 您的编辑还返回了我正在寻找的部分,非常感谢您的帮助。谢谢@ispiro!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多