我正在使用一个库,要求我传递我的私人成员的名字,大概是因为它可以在内部做一些反思:
m_MaterialsProp = serializedObject.FindProperty("m_Materials");
当我重构并移动它时,确保这些字符串保持正确就变成了一场噩梦。
我是否可以获得对私有成员的安全引用,并将成员名称传递给函数?
答案 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;
}