comment faire pour itérer sur les propriétés internes en c#
public class TestClass
{
public string property1 { get; set; }
public string property2 { get; set; }
internal string property3 { get; set; }
internal string property4 { get; set; }
internal string property5 { get; set; }
}
Je peux parcourir les propriétés à l'aide de la boucle suivante, mais il ne montre que des propriétés publiques. J'ai besoin de toutes les propriétés.
foreach (PropertyInfo property in typeof(TestClass).GetProperties())
{
//do something
}
- Voir aussi stackoverflow.com/questions/16024006/... pour une variante de cette.
Vous devez vous connecter pour publier un commentaire.
Vous devez indiquer que vous n'avez pas seulement besoin de les propriétés publiques, à l'aide de la surcharge accepter
BindingFlags
:Ajouter
BindingFlags.Static
si vous souhaitez inclure des propriétés statiques.Le sans paramètre surcharge retourne uniquement des propriétés publiques.
Vous avez besoin de changer la
BindingFlags
sur votre appel àType.GetProperties
Essayer:
Selon MSDN, privé, interne et ne sont pas comptabilisés dans la Réflexion de l'API.
Si Vous êtes à la rédaction de certaines unités de test, Vous voudrez peut-être jeter un oeil à InternalsVisibleTo attribut. Elle permet de préciser que l'assemblée peut voir les propriétés internes.
Et enfin, avez-Vous vraiment besoin d'avoir des propriétés internes...
par préciser ce bindingflags dans GetProperties:
Utilisation BindingFlags
Vous obtenez les propriétés internes d'un type en interrogeant l'Confidentielles propriétés puis en filtrant les méthodes Get de ces par des "IsAssembly".
interne"protégés" propriétés ont leurs accesseurs marqué comme "IsFamilyOrAssembly", "protégés" propriétés "IsFamily", et
"privé" propriétés marquées avec "IsPrivate":