698 votes

Comment obtenir la liste des propriétés d'une classe ?

Comment obtenir la liste de toutes les propriétés d'une classe ?

0 votes

Ce site pourrait également être utile.

2voto

Sakthivel Points 89

Je suis également confronté à ce type d'exigence.

Cette discussion m'a donné une autre idée,

Obj.GetType().GetProperties()[0].Name

Cela montre également le nom de la propriété.

Obj.GetType().GetProperties().Count();

ce qui montre le nombre de propriétés.

Merci à tous. C'est une belle discussion.

-5voto

user3078461 Points 1
public static class AssemblyReader
    {
        public static object PropertyValueFromName(object atype,string propertyName)
        {
            var val;
            if (atype == null)
                return null;
            Type t = atype.GetType();
            PropertyInfo[] props = t.GetProperties();
            foreach (PropertyInfo prp in props)
            {
                if (prp.Name == propertyName)
                    val =  prp.GetValue(atype);
                else
                    return null;
            }
            return val;
        }
        public enum PropertyAccessLevel
        {
            Public,
            Private,
            Static,
            All
        }
        public static string[] PropertyNamesWithAccessFromType(object atype, PropertyAccessLevel access)
        {
            if (atype == null) return new string[] { };
            Type t = atype.GetType();
            PropertyInfo[] props;
            List<string> propNames = new List<string>();
            switch (access)
            {
                case PropertyAccessLevel.All:
                    props = t.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                    foreach (PropertyInfo prp in props)
                        propNames.Add(prp.Name);
                    break;
                case PropertyAccessLevel.Public:
                    props = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
                    foreach (PropertyInfo prp in props)
                        propNames.Add(prp.Name);
                    break;
                case PropertyAccessLevel.Private:
                    props = t.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
                    foreach (PropertyInfo prp in props)
                        propNames.Add(prp.Name);
                    break;
                case PropertyAccessLevel.Static:
                    props = t.GetProperties(BindingFlags.Static | BindingFlags.Instance);
                    foreach (PropertyInfo prp in props)
                        propNames.Add(prp.Name);
                    break;
            }
            return propNames.ToArray();
        }
        public static string[] PropertyNamesFromType(object atype)
        {
            if (atype == null) return new string[] {};
            Type t = atype.GetType();
            PropertyInfo[] props = t.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            List<string> propNames = new List<string>();
            foreach (PropertyInfo prp in props)
                propNames.Add(prp.Name);
            return propNames.ToArray();
        }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X