将代码从Java转换为.NET

时间:2011-05-31 12:17:22

标签: c# java .net translation equivalent

我需要将这个片段从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等价物。 亲切的问候!

3 个答案:

答案 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;
        }
    }