Bonjour tout le monde,
J'aimerais pouvoir différencier les types "System" (Int32, String, Float, StringBuilder, etc..) des types que j'aurais moi-même ajouté (MaClasse, MaStructure, etc...).
Est-ce possible ? Si oui, comment ?
Merci d'avance.
Version imprimable
Bonjour tout le monde,
J'aimerais pouvoir différencier les types "System" (Int32, String, Float, StringBuilder, etc..) des types que j'aurais moi-même ajouté (MaClasse, MaStructure, etc...).
Est-ce possible ? Si oui, comment ?
Merci d'avance.
Alors première réponse à moi-même.
En testant Type.Fullname :
Si TypeATester.Fullname commance par ("System.") --> Type système
Sinon --> type perso.
C'est pas très sexy, mais ça a l'air de fonctionner.
Si quelqu'un a une autre méthode, je suis preneur!
Salut,
D'abord pourquoi est-ce que tu voudrais faire ça ? C'est louche. :).
Ensuite à mon avis mieux vaut tester ton propre namespace pour être sûr qu'il s'agit bien de tes objets car il existe bien d'autres namespaces qui ne sont pas à toi autre que system. ça donnerait:
Code:
1
2 if(TypeAtester.FullName.StartsWith("MonNamespace")) // alors c'est ton objet
Ben oui et non, si j'ai des objets dans plusieurs Namespace différent, il faurdait que je test chaque namespace.
Quoi qu'il en soit, c'est bien en testant la propriété Text.
Je comprend bien sur pas à quoi ça te sert, mais...
un truc plus joli serait de faire hériter de tous tes type d'un interface vide. (IMyType.)
et de faireou un truc comme ça (je le fais de tête)Code:tonType.isFamily(IMyType);
Et comme ceci ?
ouCode:
1
2
3 If (monObjetATester is maStructure) ... If (monObjetATester is maClasse) ...
Code:
1
2
3
4
5
6
7
8
9
10 switch(true) { case monObjetATester is maStructure: //Traitement case monObjetATester is maClasse: //Traitement default: //Traitement }
bilBot <<< Effectivement c'est aussi une solution.
Kelpan <<< J'avais aps pensé au "switch(True)" c'est pas idiot.
Merci pour votre aide les gars.