コード例 #1
0
        private void Scan()
        {
            List <GLib.GType> gtypes = new List <GLib.GType>();

            foreach (PropertyInfo info in typeof(T).GetProperties(BindingFlags.Default | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
            {
                object[] attrs = info.GetCustomAttributes(typeof(NodeColumnAttribute), false);

                if (attrs.Length > 0)
                {
                    NodeColumnAttribute attr   = (NodeColumnAttribute)attrs[0];
                    MethodInfo          getter = info.GetGetMethod();

                    d_valueGetters.Insert(attr.Index, getter);

                    d_sortable[attr.Index] = Array.IndexOf(getter.ReturnType.GetInterfaces(), typeof(IComparable)) != -1;

                    gtypes.Insert(attr.Index, (GLib.GType)info.PropertyType);
                }

                attrs = info.GetCustomAttributes(typeof(PrimaryKeyAttribute), false);

                if (attrs.Length > 0)
                {
                    MethodInfo getter = info.GetGetMethod();
                    d_primaryKeys[info.PropertyType] = getter;
                }
            }

            foreach (MethodInfo info in typeof(T).GetMethods(BindingFlags.Default | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
            {
                object[] attrs = info.GetCustomAttributes(typeof(CustomRendererAttribute), false);

                foreach (object attr in attrs)
                {
                    CustomRendererAttribute at = (CustomRendererAttribute)attr;
                    d_customRenderers.Add(new CustomRenderer(at.Column, at.Renderer, info));
                }

                attrs = info.GetCustomAttributes(typeof(SortColumnAttribute), false);

                foreach (object attr in attrs)
                {
                    SortColumnAttribute at = (SortColumnAttribute)attr;

                    d_sortColumns[at.Column] = info;
                    d_sortable[at.Column]    = true;
                }
            }

            d_gtypes = gtypes.ToArray();
        }
コード例 #2
0
        public override string ToString()
        {
            List <string> ret = new List <string>();

            foreach (PropertyInfo info in GetType().GetProperties())
            {
                object[] attrs = info.GetCustomAttributes(typeof(NodeColumnAttribute), false);

                if (attrs.Length > 0)
                {
                    NodeColumnAttribute attr = (NodeColumnAttribute)attrs[0];
                    ret.Insert(attr.Index, String.Format("{0} = {1}", info.Name, info.GetGetMethod().Invoke(this, new object[] {})));
                }
            }

            return(String.Format("[Node: {0}]", String.Join(", ", ret.ToArray())));
        }