thristam
Messages postés23Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention28 mars 2013
-
27 mars 2013 à 19:32
thristam
Messages postés23Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention28 mars 2013
-
28 mars 2013 à 06:22
Bonjour,
Bon c'est peut-être impossible mais j'y accède dans le debug et pas dans le programme.... Je m'explique :
class A
{
public int a;
public A()
{
a = 1;
}
}
class XList<T> : List<T>
{
public XList()
: base()
{
}
public void F()
{
T t = this[0];
int a = t.a;
}
}
static void Main()
{
XList l = new XList();
l.Add(new A());
l.F();
}
Je veux accéder à la valeur de a dans F. Ce code ne compile pas à cause de :int a = t.a; Par contre, si je vire cette ligne alors ça compile et je peux accéder à la valeur 1 par l'objet t par le debug !!
Impossible de faire un cast A de T.... T.GetType().GetFieldInfo() me permet d'accéder au champs de l'entier a mais pas à sa valeur....
F<T>() ne marche pas....
C'est dingue qu'on puisse lire la valeur dans le debug ( sinon j'aurai arrêter ) et pas dans le programme. La solution est surement de lire la valeur durant le runtime mais je ne sais pas comment faire :p
Quelqu'un a une idée ?
Contraintes :
- Il faut faire dans F()
- Il faut utiliser les templates ( avec Object ça marche ).
thristam
Messages postés23Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention28 mars 2013 28 mars 2013 à 06:22
Eh bien, un grand merci. Cela va me permettre de retirer 4 classes de mon projet.
Je suis loin d'être débutant, j'avais pensé à :as A; mais g cru que c'était comme un cast A. ...
Enfin bref, bien joué