Fra*_*ser 5 .net c# reflection const
有没有办法从给定值确定常量的名称?
例如,给出以下内容:
public const uint ERR_OK = 0x00000000;
怎么能获得"ERR_OK"?
我一直在寻找反思,但似乎无法找到任何有助于我的东西.
Jon*_*eet 15
一般来说,你不能.可以有任意数量的具有相同值的常量.如果您知道声明常量的类,您可以查找所有公共静态字段并查看是否有值为0,但这就是全部.那么,这对你来说可能还不错 - 是吗?如果是这样...
public string FindConstantName<T>(Type containingType, T value)
{
EqualityComparer<T> comparer = EqualityComparer<T>.Default;
foreach (FieldInfo field in containingType.GetFields
(BindingFlags.Static | BindingFlags.Public))
{
if (field.FieldType == typeof(T) &&
comparer.Equals(value, (T) field.GetValue(null)))
{
return field.Name; // There could be others, of course...
}
}
return null; // Or throw an exception
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7017 次 |
| 最近记录: |