获取c#

时间:2019-01-03 07:08:00

标签: c#

想知道如何获取属性的呼叫者信息

一种方法很简单

public void TraceMessage([CallerMemberName] string memberName = "") {
    Console.Println(memberName);
}

您将得到调用该方法的人。

我想要相同的财产

public MySqlConnection Connection { get; set; }

我试图通过这样的getter调用函数来获取调用者名称

public Connection connection { get { TraceMessage()
return _someVariable;} 
set; }

但是通过执行此操作,TraceMessage将打印

  

连接

作为方法名称

是否有任何方法可以将参数传递给getter或其他实现此目的的方法?

1 个答案:

答案 0 :(得分:1)

您将获得属性的名称,因为它是堆栈跟踪中的先前方法。要在属性中进行跟踪,可以使用System.Diagnostics.StackTrace:

textarea

Example can be found in this link

此外,如果要为其创建单独的方法,则可以创建在帧之前获取帧的方法。对这些帧进行索引,以便当前的方法/属性帧为0,调用者为1,调用者的调用者为2,依此类推。

using System.Diagnostics;
.
.
public Connection connection 
{ 
    get 
    { 
        Console.WriteLine(new StackTrace().GetFrame(1).GetMethod().Name);
        return _connection;
    } 
}

然后从属性中调用该方法。