Bonjour,
Je bute sur un problème de champ générique dans une classe.
Voici mon code :
J'ai l'erreur suivante :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class Field<T> { private string _name; private int _length; private T _value = null; public Field(string name, int length) { _name = name; _length = length; } public string Name { get { return _name; } } public int Length { get { return _length; } } public T Value { get { return _value; } } public void SetValue(string value) { if (_value is string) { // Ca bloque ici _value = (T)value; } else { throw new TypeAccessException(string.Format("Unsupported type {0}.", _value.GetType().Name)); } } }
Ma méthode SetValue va me servir à convertir une valeur au format "string" dans le type T.Cannot convert type 'string' to 'T'
Je veux pouvoir utiliser les types standard "string", "int", etc. pour T, donc je ne peux pas remplacer T par une interface de mon cru, puisque je ne peux pas étendre les types de base.
Le second problème se situe dans le get de Value : comment détecter que la _value n'a pas été initialisée ? Je ne peux pas l'initialiser à null, puisque T peut ne pas être nullable...
Une idée ?
Partager