通过反射获得一个内部类(Windows 8.1)

本文关键字:一个 内部类 Windows 反射 | 更新日期: 2023-09-27 18:14:04

我有一个叫做Languages的类。它包含其他几个静态类。例如:

namespace TryReflection
{
    class Languages
    {
        public static class it
        {
            public static string PLAY = "Gioca";
            public static string START = "Inizia!";
            public static string NEXT = "Prossimo";
            public static string STOP = "Ferma!";
            public static string SCORE = "Punti";
            public static string RESTART = "Per cambiare la difficoltà inizia una nova partita";
        }
        public static class en
        {
            public static string PLAY = "Play";
            public static string START = "Start!";
            public static string NEXT = "Next";
            public static string STOP = "Stop!";
            public static string SCORE = "Score";
            public static string RESTART = "To change difficulty restart your match";
        }
    }
}

每个类包含一些静态字符串。我想通过反射访问这些类(并使用我拥有的系统语言字符串)。我可以这样访问Languages类:

Type tt = Type.GetType("TryReflection.Languages", true); 

然后我想这样做:

tt.GetNestedType();

不幸的是,似乎在Windows 8.1上没有GetNestedTypes方法。那么,我如何访问这些类呢?谢谢你。

通过反射获得一个内部类(Windows 8.1)

@D Stanley是正确的。本地化应该以不同的方式处理。

但是,要回答您的问题,请查看PropertyDescriptor类。它允许您获得类的属性的抽象。我用它来迭代集合,使用属性和值来构建datatable。

//Get the properties as a collection from the class
Type tt = Type.GetType("TryReflection.Languages", true);
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(tt);  
for (int i = 0; i < props.Count; i++)
{
    PropertyDescriptor prop = props[i];
    string propertyInfo = String.Format("{0}: {1}", 
        prop.Name, 
        prop.PropertyType.GetGenericArguments()[0]));
    Console.Out.Write( propertyInfo );
}