gpt4 book ai didi

c# - Expression> 是否适用于混合的静态/实例成员?

转载 作者:行者123 更新时间:2023-11-30 22:55:06 25 4
gpt4 key购买 nike

我正在使用 GetMemberName<T>(Expression<Func<T>> member)检索成员名称。不使用 staticFoo 的修饰符属性,该成员不能与此方法一起使用:

An object reference is required for the non-static field, method, or property 'Program.Foo'

由于我对LINQ Expressions的了解不是很深,所以想请教:

问题: 除了 nameof(Foo) 之外,还有别的办法吗?以“等效” 方式访问成员?目标是获取属性元数据,例如名称,而不是从实例访问其值。

public class Program
{
public /*static*/ int Foo { get; set; }

public static void Main(string[] args)
{
Console.WriteLine(GetMemberName(() => Foo));
}

public static string GetMemberName<T>(Expression<Func<T>> member)
{
return (member.Body as MemberExpression)?.Member.Name;
}
}

最佳答案

你把代码放在 publicstaticvoid Main(string[] args) 里,意思是你不没有一个 Program 实例来访问 Foo 实例成员。它与表达式无关,GetMemberName 将按照您编写的方式工作。

关于c# - Expression<Func<T>> 是否适用于混合的静态/实例成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55590386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com