从方法参数中获取原始属性名称

时间:2015-11-03 09:11:24

标签: c# methods reflection parameters

如何获取作为参数传递给方法的原始属性名称?

class TestA
    {
        public string Foo { get; set; }

        public TestA()
        {
            Foo = "Bar";

            TestB.RegisterString(Foo);
        }
    }

    class TestB
    {
        public static void RegisterString(string inputString)
        {
            // Here I want to receive the property name that was used
            // to assign the parameter input string
            // I want to get the property name "Foo"
        }
    }

1 个答案:

答案 0 :(得分:2)

您可以使用nameof关键字添加参数。不知道为什么你会这么想:

TestB.RegisterString(Foo, nameof(Foo));

这将传递"Foo"作为第二个参数。没有办法让自动化,所以你不需要自己打电话给nameof,这使得这样做毫无用处。

如果您要从Foo媒体资源中调用此邮件,则可以使用CallerMemberNameAttribute,它会输入来电者的姓名。编译器将设置正确的值,因此您不必自己在调用方法中提供它。

public static void RegisterString( string inputString
                                 , [CallerMemberName] string caller = null
                                 )
{
    // use caller here
}

这对我来说更有意义。