0

我有以下代码块。如何从特定的 DLL 文件中获取所有属性名称?目前,我可以获取类名、命名空间,但我不知道如何获取类中的属性。谢谢,

foreach (Type type in myAssambly.GetTypes())
{
    PropertyInfo myPI = type.GetProperty("DefaultModifiers");
    System.Reflection.PropertyAttributes myPA = myPI.Attributes;

    MessageBox.Show(myPA.ToString());
}
4

2 回答 2

1

听起来您真的对属性感兴趣:

foreach (Type type in myAssembly.GetTypes())
{
    foreach (PropertyInfo property in type.GetProperties())
    {
        MessageBox.Show(property.Name + " - " + property.PropertyType);
    }
}

编辑:好的,听起来你真的很想要字段:

foreach (Type type in myAssembly.GetTypes())
{
    foreach (FieldInfo field in type.GetFields(BindingFlags.Instance | 
                                               BindingFlags.Static |
                                               BindingFlags.Public |
                                               BindingFlags.NonPublic))
    {
        MessageBox.Show(field.Name + " - " + field.FieldType);
    }
}
于 2013-08-13T19:50:04.500 回答
0

如果您有对 DLL 的编译时引用,则可以使用其中的类型来获取其程序集,然后使用您的代码来获取属性:

var myAssembly = Assembly.GetAssembly(typeof(SomeType));

否则,您可以动态加载它:

var myAssembly = Assembly.LoadFrom(assemblyPath);
于 2013-08-12T21:38:48.343 回答