gpt4 book ai didi

c# - 是否可以在不创建对象实例的情况下获取对象属性名称字符串?

转载 作者:可可西里 更新时间:2023-11-01 03:08:30 24 4
gpt4 key购买 nike

对象实例属性的字符串表示 可以用Expression<Func<T>> 获取。 :

string propertyName = ((MemberExpression) property.Body).Member.Name;

但是如果我没有(不想创建)实例怎么办?在这种情况下如何获取属性名称?

解释

我需要一些对象的属性名称的字符串表示。

假设有一个实体

public class Customer
{
public int ID;
public string Name;
}

现在我想将此实体的键表达式传递给其他函数,因此我需要字符串“ID”,但我不想像 SomeOtherFunction("ID") 这样硬编码字符串,我改用表达式 SomeOtherFunction(ExpressionReader.GetString(() => CustomerInstance.ID)) .为此,我需要提供实体实例。

现在我想创建实例来做同样的事情。

最佳答案

这可以通过如下方法签名实现:

private static string GetPropertyName<TModel, TProperty>(Expression<Func<TModel, TProperty>> property)
{
MemberExpression memberExpression = (MemberExpression)property.Body;

return memberExpression.Member.Name;
}

您可以在没有客户类实例的情况下调用此方法:

string propertyName = GetPropertyName((Customer c) => c.ID);

当然,在转换为 MemberExpression 并访问 memberExpression.Member.Name 之前,您应该为正确的表达式类型添加一些检查。

关于c# - 是否可以在不创建对象实例的情况下获取对象属性名称字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136480/

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