Comment itérer toutes les propriétés de «chaîne publique» dans une classe .net

Disons que j’ai un fichier .cs aléatoire contenant une classe avec des propriétés et des méthodes de toutes sortes.

Comment puis-je itérer les noms (en tant que chaînes) de toutes ces propriétés de chaîne publiques?

Example.cs:

Public class Example { public ssortingng FieldA {get;set;} public ssortingng FieldB {get;set;} private ssortingng Message1 {get;set;} public int someInt {get;set;} public void Button1_Click(object sender, EventArgs e) { Message1 = "Fields: "; ForEach(ssortingng propertyName in this.GetPublicSsortingngProperties()) { Message1 += propertyName + ","; } // Message1 = "Fields: Field1,Field2" } private ssortingng[] GetPublicSsortingngProperties() { //What do we put here to return {"Field1", "Field2"} ? } } 

 private ssortingng[] GetPublicSsortingngProperties() { return this.GetType() .GetProperties(BindingFlags.Public | BindingFlags.Instance) .Where(pi => pi.PropertyType == typeof(ssortingng)) .Select(pi => pi.Name) .ToArray(); } 

Vous pouvez utiliser la méthode GetProperties de Type :

 GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); 

Cela vous donnera un tableau d’objects PropertyInfo , un pour chaque propriété.

Vous pouvez vérifier que la propriété est une propriété de ssortingng en vérifiant que:

 property.PropertyType == typeof(ssortingng) 

Pour obtenir les noms des propriétés, utilisez property.Name .

 var publicSsortingngProperties = from property in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance) where property.PropertyType == typeof(ssortingng) select property.Name;