C# 获取对象对的名称
本文关键字:获取 取对象 | 更新日期: 2023-09-27 18:33:00
var myObject = new { Id = 0, Name = "Test" };
我想将键名称放入项目其他部分的变量中,例如:
var keyName = someObject[0]; //someObject is passed myObject;
var value = someObject[1];
//Output keyName = Id; value = 0;
我知道字典会很好,但我必须坚持使用myObject的发音;
您可以通过以下方式访问对象的属性:
myObject.GetType().GetProperties()
和名称,例如
myObject.GetType().GetProperties()[0].Name //("Id")
使用反射无法执行此操作,因为变量一旦编译为 IL,就没有名称。但是,您可以使用表达式树并将变量提升为闭包:
static string GetVariableName<T>(Expression<Func<T>> expr)
{
var body = (MemberExpression)expr.Body;
return body.Member.Name;
}
您可以按如下方式使用此方法:
static void Main()
{
var someVar = 3;
Console.Write(GetVariableName(() => someVar));
}
请注意,这非常慢,因此不要在应用程序的性能关键路径中使用它。
有关更完整的示例,请参阅此处。