Je débute en C# alors SVP soyez indulgeant.
J'aimerai savoir s'il est possible de créer une variable de classe qui pourrait pointer sur n'importe quel type d'objet definit dans d'autre classe et autorisant l'appel des propriétés de chacun de ces objets:
pour être clair:
class a{
public object Monobjet;
public static void main
{
b tempb = new b();
c tempc = new c();
Monobjet = tempb;
Console.Writeline (Monobjet.propriété_de_b); // plante
Monobjet = tempc;
Console.Writeline (Monobjet.propriété_de_c); // plante
}
}
class b{
public b{
...
}
public string propriété_de_b(){
return "Coucou b";
}
}
class c{
public c{
...
}
public string propriété_de_c(){
return "Coucou c";
}
}
L'affectation à l'objet de type object fonctione mais l'appel des propriété plante sur "'object' does not contain definition for ''"
C'est tout a fait normal que ça ne fonctionne pas.
Si tu déclares une variable de type object, le compilateur ne connait que les méthode lié à object, et pas à tes classes.
Il y a plusieurs possibilités.
La 1ère est le casting.
Si à un moment, tu est sûr que ton objet est de type b, tu peux faire
if(Monobject is typeof(b))
Console.Writeline (((b)Monobjet).propriété_de_b);
La 2ème est de travailler avec des interfaces
Si tes classes b et c implémente la même interface IName, tu peut faire
IName Monobject = tempb ;
Console.Writeline (Monobjet.propriété_de_IName);
Amicalement, SharpMao
P.S. Je suis peut-être un peu rétro, mais en principe, on essaie d'éviter les caractères accentués dans le code.
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)