1

このフラグメントを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();
        }           
    }

最初の行(辞書クラス)は.NETからのものです(私の翻訳は試してみてください;))。Fieldクラスがjava.lang.reflect.Fieldからのものであることは知っていますが、同等の.NETが見つかりませんでした。敬具!

4

3 に答える 3

7

System.Reflection.FieldInfoあなたはクラスとを探していますtypeof(SomeType).GetFields()

于 2011-05-31T12:19:00.763 に答える
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);
}
于 2011-05-31T12:27:58.990 に答える
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;
        }
    }
于 2011-05-31T12:38:13.220 に答える