Reflétant un domaine privé d'une classe de base

Voici la structure:

Maclasse : SuperClass2

SuperClass2 : SuperClass1

superClass2 est dans le Produit.Web et SuperClass1 est dans la .NET Système.Web de l'assemblée

Je suis en train de forcer une valeur dans un private bool champ sur SuperClass1. Mais n'importe ce que j'essaie je ne peux pas obtenir les champs de revenir de la réflexion.

Je suis en utilisant le code suivant avec différents BindingFlag combinaisons mais rien n'a fonctionné jusqu'à présent. SuperClass1 est une classe abstraite.

((SuperClass1)this).GetType().GetFields(System.Reflection.BindingFlags.NonPublic);

Notes:
Lorsque j'utilise GetProperties (), je reviens d'une belle grosse liste mais quand je spécifie tout bindingflags je ne reçois rien, même si il ya des propriétés correspondantes. Quel est le deal?

Aussi, le champ n'est pas marqué interne

Obvisouly, je serais en utilisant GetField(string nom, BindingFlags) mais je ne peux même pas obtenir GetFlags() fonctionne.

Mise à jour: j'ai essayé d'ajouter BindingFlags.Une Instance comme l'a suggéré, mais il ne fonctionne pas (comme prévu de toute façon). Je reviens de 2 champs qui sont à venir à partir de la classe SuperClass1 hérite. Retourne null quand il est utilisé avec GetField(string nom, Drapeaux)

Voici le code de la classe de base, je vais essayer d'obtenir le champ de

public abstract class BaseValidator : Label, IValidator
  {
    private bool propertiesChecked;
...
}
  • Désolé pour la question stupide, mais pourquoi fais-tu cela? 🙂
  • Grande question. En raison de Produit.Web.SuperClass2, je dois faire cela comme un travail autour de la prise en charge d'une fonction qu'ils doivent déjà prendre en charge, mais ne pas. Fondamentalement, l'API a une méthode virtuelle, mais TOUJOURS des appels à la base de la mise en œuvre. J'ai donc besoin de modifier la valeur du champ pour qu'il ne marche pas faire certaines vérifications afin que je puisse obtenir mon code à exécuter.
  • Merci de ne pas demander "pourquoi voulez-vous faire cela?" -- il n'est pas utile ou implicite -- il y a un million de raisons valables pour le faire, et tous sont différents. Évidemment, les odeurs de code, mais le dogme ne va pas aider les 900 mille d'entre nous qui seront jetés là par l'intermédiaire de google.
InformationsquelleAutor Dustin Davis | 2011-08-05