Перевести код с Java на .NET - PullRequest
1 голос
/ 31 мая 2011

Мне нужно перевести этот фрагмент с 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 (мой перевод try;)). Я знаю, что класс Field взят из java.lang.reflect.Field, но я не смог найти эквивалент .NET. С уважением!

Ответы [ 3 ]

7 голосов
/ 31 мая 2011

Вы ищете класс System.Reflection.FieldInfo и typeof(SomeType).GetFields().

2 голосов
/ 31 мая 2011
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);
}
1 голос
/ 31 мая 2011

попробуйте сделать это

    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;
        }
    }
...