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:
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
    {
    }
}
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...
Selon le type de item, je dois donc appeler l'une de ces classes DataHelpers:
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);
    }
}
La méthode DataHelpers.MyMovieHelper.GetData() ne traite donc que des objets Movie et renvoie un objet Movie.

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;}
        }
    }
}