gpt4 book ai didi

c# - 如何将此方法作为扩展方法添加到我的类的属性中?

转载 作者:太空狗 更新时间:2023-10-30 00:45:12 25 4
gpt4 key购买 nike

我有一个方法,我想将此方法作为扩展方法添加到我的类的属性中。该方法给出一个表达式作为输入参数。方法如下:

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

我想像下面的例子一样使用这个方法:

string propertyName = MyClass.Property1.GetPropertyName();

这可能吗?如果是,解决方案是什么?

最佳答案

不,这是不可能的。不清楚 MyClass 是类名(Property1 是静态属性)还是实例属性而 MyClass.Property1根本不是有效的成员访问权限。如果是后者,您可能希望将方法更改为:

public static string GetPropertyName<TSource, TResult>(
Expression<Func<TSource, TResult>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}

并将其命名为:

string propertyName = GetPropertyName<MyClass, string>(x => x.Property1);

或者您可以使用带有泛型方法的泛型类,以便可以推断string:

string propertyName = PropertyUtil<MyClass>.GetPropertyName(x => x.Property1);

那会是这样的:

public static class PropertyUtil<TSource>
{
public static string GetPropertyName<TResult>(
Expression<Func<TSource, TResult>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}
}

关于c# - 如何将此方法作为扩展方法添加到我的类的属性中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6042937/

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