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;