0
点赞
收藏
分享

微信扫一扫

C# 获取调用者信息

获取调用者信息包括三个特性,分别是CallerMemberName、CallerLineNumber、CallerFilePath。

1. CallerMemberName

  • 功能:用于获取调用当前方法的成员名称。
  • 使用场景:通常用于日志记录,可以自动记录哪个方法或属性触发了当前方法的调用。

public void Log(string message, [CallerMemberName] string memberName = null)
{
    Console.WriteLine($"Message: {message}, Called by: {memberName}");
}


public void Test()
{
    Log("Hello, World!");
}

在上面的代码中,调用Log方法时,memberName参数会自动被赋值为"Test",因为Test方法调用了Log方法。

2. CallerLineNumber

  • 功能:用于获取调用当前方法的代码行号。
  • 使用场景:用于调试和日志记录,可以提供调用代码的具体位置信息。

public void Log(string message, [CallerLineNumber] int lineNumber = 0)
{
    Console.WriteLine($"Message: {message}, Line Number: {lineNumber}");
}


public void Test()
{
    Log("Hello, World!");
}

在上面的代码中,调用Log方法时,lineNumber参数会自动被赋值为调用Log方法的代码行号.

3. CallerFilePath

  • 功能:用于获取调用当前方法的文件的路径。
  • 使用场景:用于调试和日志记录,可以提供调用代码所在的文件信息。

public void Log(string message, [CallerFilePath] string filePath = null)
{
    Console.WriteLine($"Message: {message}, File Path: {filePath}");
}


public void Test()
{
    Log("Hello, World!");
}

在上面的代码中,调用Log方法时,filePath参数会自动被赋值为包含调用Log方法的代码的文件的完整路径。

注意事项

  • 这些特性是通过编译器在编译时注入的,因此它们不会对运行时性能产生影响.
  • 这些特性通常用于辅助开发和调试,而不是在生产代码中频繁使用.
  • 使用这些特性时,参数必须有默认值,因为它们在编译时会被替换为实际值.
举报

相关推荐

0 条评论