我需要将这个片段从Java翻译成.NET(而不是C#,但我也知道Visual Basic)。 这是代码:
typeStrings = new Dictionary<Int16, String>();
Field[] fields = Type.class.getDeclaredFields();
for (Field field : fields) {
try {
typeStrings.put(field.getInt(null), field.getName());
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
第一行(Dictionary类)来自.NET(我的翻译尝试;))。 我知道Field类来自java.lang.reflect.Field,但我找不到.NET等价物。 亲切的问候!
答案 0 :(得分:7)
您正在寻找System.Reflection.FieldInfo
课程和typeof(SomeType).GetFields()
。
答案 1 :(得分:2)
var typeStrings = new Dictionary<int, string>();
FieldInfo[] fields = yourObject.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (var field in fields)
{
typeStrings.Add((int)field.GetValue(yourObject), field.Name);
}
答案 2 :(得分:1)
尝试这样做
var typeStrings = new Dictionary<Int16, String>();
var fields = this.GetType().GetFields();
foreach (var field in fields)
{
try
{
typeStrings.Add(Convert.ToInt16(field.FieldHandle.Value.ToInt32().ToString()), field.Name);
}
catch (Exception)
{
throw;
}
}