用反照得到的PropertyInfo.Attributes为什么不是一个数组而是一个enum

用反射得到的PropertyInfo.Attributes为什么不是一个数组而是一个enum?
我想测试一下,用反射的方法得到一个类的所有Property的Attributes名称,代码如下:

    class Program
    {
        [Category("MyString")]
        public string S1 { get; set; }
        public string S2 { get; set; }
        [Category("YourString")]
        public string S3 { get; set; }
        public void LoopTypeInfo()
        {
            Type t = GetType();
            TypeInfo ti = t.GetTypeInfo();

            var propinfo = ti.GetProperties();
            foreach (PropertyInfo pi in propinfo)
            {
                Console.WriteLine(pi.Name);
                Console.WriteLine(pi.Attributes.ToString());
            }
        }
        static void Main(string[] args)
        {
            var p = new Program();
            p.LoopTypeInfo();
        }
    }

我本来期待的是,propinfo里面的Attributes是一个数据,包含每一个property里面的所有Attribute的类型和名称,例如[Category("MyString")]
可是我查看源代码发现,是一个enumeration

    [Serializable]
    [ComVisible(true)]
    [Flags]
    public enum PropertyAttributes
    {
        None = 0,
        SpecialName = 512,
        RTSpecialName = 1024,
        HasDefault = 4096,
        Reserved2 = 8192,
        Reserved3 = 16384,
        Reserved4 = 32768,
        ReservedMask = 62464,
    }

而我程序的运行结果是
S1
None
S2
None
S3
None
----------------------
我希望我的程序能打印"S1"之后,打印"S1"这个属性的所有Attribute的名称。用反射能做到吗? 我的代码该怎么修改?

------解决思路----------------------
foreach
pi.GetCustomAttributes(false)

------解决思路----------------------
msdn: 枚举值是一个数字,用以表示方法上实现的特性的按位“或”。

也就是说,这个属性是用来找到当前属性的一些(具有 true/false 开关)属性的。跟你找属性定义上的 Attribute 根本无关。

http://msdn.microsoft.com/zh-cn/library/system.reflection.propertyattributes(v=vs.110).aspx

不可随便望文生义,要稍微了解一点深入的内容。