如何获取当前工作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文件的文件名和当前类的名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中获取当前可执行文件的名称?

如何在 VBA 中获取当前工作表的路径?

C#中如何获取程序的当前文件夹名称并将zip文件解压到当前文件夹? [复制]

如何在刀片文件 laravel 5.6 中获取当前路由名称

C# 当前上下文不存在名称的问题

CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]