获取对私有成员名的直接引用,而不是使用字符串

本文关键字:字符串 引用 成员 获取 | 更新日期: 2023-09-27 18:12:03

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

m_MaterialsProp = serializedObject.FindProperty("m_Materials");

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

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

获取对私有成员名的直接引用,而不是使用字符串

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

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

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

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