通过反射获得一个内部类(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
方法。那么,我如何访问这些类呢?谢谢你。
@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 );
}