如何在.NET Core 1.1中获取当前属性的名称

时间:2017-05-24 15:55:22

标签: c# .net .net-core system.reflection

我需要能够访问.NET Core中类的当前属性的名称。

public class MyClass
{
    private string _myProperty;

    public string MyProperty
    {
        get => _myProperty;
        set
        {
            // GOAL: Check my property name and then do something with that information. 

            // The following used to works in the full .NET Framework but not .NET Core.
            // var propName = System.Reflection.MethodBase.GetCurrentMethod().Name;

            _myProperty = value;
        }
    }
}

在完整的.NET Framework中,我们可以使用如下的反射。

System.Reflection.MethodBase.GetCurrentMethod().Name;

(我们记得,一个属性实际上只是一种方法。)

但是,.NET Core 1.1中似乎没有此功能可用 - 尽管它(可能/将会)在.NET Standard 2.0中可用。

在这个GitHub问题(https://github.com/dotnet/corefx/issues/12496)上,有一个使用GetMethodInfoOf来访问属性名称的引用。但是,我无法找到此方法的任何示例,并且指向可能示例的GitHub链接似乎已断开。

可以使用哪种其他策略或技术来检索当前属性的名称?

非常感谢!

1 个答案:

答案 0 :(得分:7)

也许我在这里完全误解了您的问题,但仅仅使用nameof运算符呢?

var propName = nameof(MyProperty);