从gettype获取用户创建的属性

时间:2016-08-17 17:35:16

标签: c# workflow-foundation

我想从类中获取属性名称。
我使用GetType()获取属性名称,但它显示包括系统生成的属性,如... parent

 public  class Classtest : Activity
    {
        public int To { get; set; }
        public int From { get; set; }
    }

           Classtest testclass = new Classtest();

           foreach (Activity activity in testclass.Activities)
           {
               Type type = activity.GetType();
               PropertyInfo[] propertyInfo = type.GetProperties();


               foreach (var p in propertyInfo)
               {                  
                   Console.WriteLine(p.Name);

                   prpoertyCount--;
               }
          }

输出我只需要FromTo属性,但没有像parent,name这样的系统属性。

1 个答案:

答案 0 :(得分:1)

在您的情况下,您从基类获得了属性,因为您从“活动”中获取了类型:activity.GetType();

首先应获取Classtest的类型,然后获取数组pf属性。只需使用:

Classtest testclass = new Classtest();
var propertyInfo = testclass.GetType().GetProperties(System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.DeclaredOnly);


foreach (var p in propertyInfo)
{                  
    Console.WriteLine(p.Name);
}

这里给GetProperties()方法传递了一些绑定标志。您可以在MSDN

上阅读有关该绑定标志的更多信息