如何获取当前工作cs文件的文件名和当前类的名称[重复]
Posted
技术标签:
【中文标题】如何获取当前工作cs文件的文件名和当前类的名称[重复]【英文标题】:How can I get filename of current working cs file and the name of the current class [duplicate] 【发布时间】:2013-04-30 08:27:17 【问题描述】:假设我正在处理 Welcome.cs 文件。在构造函数中,我想打印“欢迎”。但是,如果我将相同的代码放在 HelloWorld.cs 中,它应该会打印 HellowWorld。我该怎么做?
【问题讨论】:
代码文件对您编译的应用程序没有影响。您可以在一个代码文件中拥有一个包含 10.000 个类的应用程序。 您想要文件还是类的名称?它们本质上是不同的,它们的任何共同点都只是约定俗成的。 @J.Steen:其实是类名。 @TimSchmelter 现在有框架方法可以做到这一点,所以我认为保留这个问题是可以的 【参考方案1】:你可以试试
string thisFile = new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName();
【讨论】:
这就是这样做的方法。请注意,true
表示包含调试信息。这仅适用于调试版本,它发出包含源信息的pdb
文件。
如果 OP 没有被混淆,这就是这样做的方法。 =)
@harpo 所以这在生产构建中不起作用?【参考方案2】:
如何打印
[当前文件名 - 方法名 - 行号] ?
private static void Log(string text,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "",
[CallerLineNumber] int line = 0)
Console.WriteLine("0_1(2): 3", Path.GetFileName(file), member, line, text);
测试:
Log("Test");
输出:
Program.cs_Main(11):测试
【讨论】:
【参考方案3】:如果我理解正确,试试this.GetType().Name
【讨论】:
我们中的一个人没有正确理解。 OP 询问如何获取源文件名。 @harpo - 看看他的评论 - 看来他是认真的 是的,我的意思是类名。我得到了答案。谢谢哥们【参考方案4】:试试这个来获取文件名:
string currentFile = new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName();
获取当前行:
int currentLine = new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileLineNumber();
【讨论】:
【参考方案5】:如果要获取类名,可以使用反射技术。
例如:
Type classType = yourObject.GetType();
你可以从
获取类名classType.Name
【讨论】:
很好的答案,但不幸的是这个答案已经存在。以上是关于如何获取当前工作cs文件的文件名和当前类的名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章