想知道如何获取属性的呼叫者信息
一种方法很简单
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或其他实现此目的的方法?
答案 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;
}
}
然后从属性中调用该方法。