Bonjour,
je n'ai jamais utilisé les génériques et j'ai un peu de mal à appréhender le concept, alors je ne sais pas si l'utilisation que j'en fais ici est la bonne.
J'ai créé une méthode générique qui manipule des objets Movie, Book, Music héritant tous d'une classe Media:
Cette méthode doit faire des traitements internes en appelant d'autres classes (privées à WebDataQUery) qui, elles sont spécifiques et ne traitent qu'un seul type d'objet: Movie, Book, Music...
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static partial class WebDataQuery { public static T GetMedia<T>(T item) where T : Media { } }
Selon le type de item, je dois donc appeler l'une de ces classes DataHelpers:
La méthode DataHelpers.MyMovieHelper.GetData() ne traite donc que des objets Movie et renvoie un objet Movie.
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static T GetMedia<T>(T item) where T : Media { if (typeof(T) == typeof(Movie)) { DataHelpers.MyMovieHelper.GetData((Movie)item); } }
Seulement j'ai une erreur sur (Movie)item : Cannot convert type 'T' to 'Movie'
Comment dois-je procéder ?
Pour être plus clair, le tout s'articule ainsi:
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 public static partial class WebDataQuery { public static T GetMedia<T>(T item) where T : Media { if (typeof(T) == typeof(Movie)) { DataHelpers.MyMovieHelper.GetData((Movie)item);} } private static class DataHelpers { public static Class MyMovieHelper { public static Movie GetData(Movie mymovie) { return mymovie;} } } }
Partager