J'essaie de refléter les champs dans un type dérivé mais il retourne les champs du type de base .GetFields de type dérivé
public class basetype
{
string basevar;
}
public class derivedtype : basetype
{
string derivedvar;
}
Dans une fonction:
derivedtype derived = new derivedtype();
FieldInfo[] fields = derived.GetType().GetFields();
Cela renverra basevar, mais pas derivedvar. J'ai essayé toutes les reliures différentes et cela ne semble pas faire de différence.
En outre, je le fais dans ASP.NET dans App_Code où basevar est défini dans App_Code et derivedvar est un contrôle utilisateur défini dans App_Controls où les types ne sont pas dans la portée.
Votre code a fonctionné pour moi (je vois 'derivedvar'), une fois que je fais les champs publics de les exposer à 'GetFields()'. Êtes-vous certain de votre hiérarchie de classe? Avez-vous essayé le code ci-dessus dans un projet autonome? –
Dans le code ci-dessus, 'derivedtype' ne dérive même pas de' basetype', vous devriez donc voir 'derivedvar' (avec BindingFlags.NonPublic), mais pas' basevar'. – dtb
@dtb: J'avais raté ça. Juste réanan avec la dérivation appropriée; mêmes résultats. –