bonjour,
je crée des objets à partir d'une BDD (enfin de ses champs) ce qui me donne des classes TABLE_TOTO avec des propriétés PRENOM, NOM ...
si le champ est VARCHAR en BDD alors la propriété est de type string
NUMBER alors la propriété est int (ou long)
Le "problème" c'est que ces champs peuvent être "null" or cette valeur ne peut pas être représentées par un int, long ...
Je voudrais éviter d'avoir une classe avec une propriété isNull et une Value, j'aurai préféré une espèce de "super"int qui gère la comparaison/affectation avec null
j'ai donc tenté de créer une "surclasse" de int qui permettrait d' "affecter la valeur nulle", mais je n'arrive à rien de concluant (pas de possibilité de surcharger l'opérateur d'affecation...)
est-ce que quelqu'un aurait une suggestion ?
voici ce que j'ai fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 class pseudo_int { public pseudo_int() { } int VLNN_VALUE; bool VLBO_NULLE = true; static public bool operator ==(pseudo_int o1, object o2) { if (o2 == null) return o1.VLBO_NULLE; return Object.Equals(o1.VLNN_VALUE, o2); } static public bool operator !=(pseudo_int o1, object o2) { return !Object.Equals(o1, o2); } public override bool Equals(object obj) { if ((obj == null) && VLBO_NULLE) return true; if (obj == null || GetType() != obj.GetType()) { return false; } // TODO: write your implementation of Equals() here. throw new System.NotImplementedException(); return VLNN_VALUE.Equals(obj); } }
Partager