How to get current property name via reflection?

后端 未结 8 784
悲哀的现实
悲哀的现实 2020-12-02 16:54

I would like to get property name when I\'m in it via reflection mechanism. Is it possible?

Update: I have code like this:

    public CarType Car
            


        
8条回答
  •  北荒
    北荒 (楼主)
    2020-12-02 17:50

    Since properties are really just methods you can do this and clean up the get_ returned:

    class Program
        {
            static void Main(string[] args)
            {
                Program p = new Program();
                var x = p.Something;
                Console.ReadLine();
            }
    
            public string Something
            {
                get
                {
                    return MethodBase.GetCurrentMethod().Name;
                }
            }
        }
    

    If you profile the performance you should find MethodBase.GetCurrentMethod() is miles faster than StackFrame. In .NET 1.1 you will also have issues with StackFrame in release mode (from memory I think I found it was 3x faster).

    That said I'm sure the performance issue won't cause too much of a problem- though an interesting discussion on StackFrame slowness can be found here.

    I guess another option if you were concerned about performance would be to create a Visual Studio Intellisense Code Snippet that creates the property for you and also creates a string that corresponds to the property name.

提交回复
热议问题