直接引用私有成员名称而不是使用字符串

时间:2014-07-09 11:44:06

标签: c# reference private member

我正在使用一个库,要求我传递我的私人成员的名字,大概是因为它可以在内部做一些反思:

m_MaterialsProp = serializedObject.FindProperty("m_Materials");

当我重构并移动它时,确保这些字符串保持正确就变成了一场噩梦。

我是否可以获得对私有成员的安全引用,并将成员名称传递给函数?

2 个答案:

答案 0 :(得分:0)

您可以采取的方法(不显示任何代码,您必须自己查找)是使用Annotation的自定义Fields来与此库一起使用

然后,您可以使用Reflection查找具有Fields的班级的所有Annotation。这样,如果您更改实际字段的名称,则注释保持不变,您仍然可以找到您的字段。

将类作为参数的实用程序方法可以为您提供该类的所有必需字段。

答案 1 :(得分:0)

public string GetMemberName<T>(Expression<Func<T>> memberExpression)
    {
        MemberExpression expressionBody = (MemberExpression)memberExpression.Body;
        return expressionBody.Member.Name;
    }