如何在c#中读取外部dll文件中类的属性?

时间:2013-08-12 21:31:17

标签: c# reflection dll propertyinfo

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

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

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

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

如果你有一个DLL的编译时引用,你可以使用它的类型来获取它的汇编,然后使用你的代码来获取属性:

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

否则你可以动态加载它:

var myAssembly = Assembly.LoadFrom(assemblyPath);