public class Test
{
public const string test1 = "Test1";
public const string test2 = "Test2";
}
private Test testObj = new Test();
private Type testType = testObj.GetType();
private PropertyInfo[] properties = testObj.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
//传入Test类中的属性值"Test1"、"Test2",输出属性名
public void GetTypeValue(string s)
{
for (int i = 0; i < testType.GetFields().Length; i++)
{
if (testType.GetFields()[i] != null)
{
if (testType.GetFields()[i].GetValue(testObj) != null && testType.GetFields()[i].GetValue(testObj).ToString() == s)
{
Debug.LogError(testType.GetFields()[i].Name);
break;
}
}
}
}
或者下面这种方式也可以
private Type testType;
private FieldInfo[] fieldInfos;
public void GetTypeValue(ushort s)
{
testType = typeof(Test);
fieldInfos = testType.GetFields();
for(int i = 0; i < fieldInfos.Length; i++)
{
if(fieldInfos[i] != null && fieldInfos[i].GetRawConstantValue() != null)
{
if (Convert.ToInt32(fieldInfos[i].GetRawConstantValue()) == s)
{
Debug.LogError(fieldInfos[i].Name);
}
}
}
}