[Précision : Je travaille sous Visual Studio 2013]

Bonjour tout le monde,

Dans une de mes classes statiques, j'ai une méthode privée, générique et statique avec la signature suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private static void MaMehode<T>(List<T> p1, ObservableCollection<T> p2)
Je souhaite faire un test unitaire sur celle-ci. Pour cela j'utilise ce que j'ai toujours utilisé pour tester mes méthodes privées et statiques : la classe PrivateType et sa méthode InvokeStatic().
Voici donc un extrait du code de mon test unitaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
List<char> p1 = new List<char>() { 'd', 'a', 'c', 'b' };
ObservableCollection<char> p2 = new ObservableCollection<char>() { 'a', 'b', 'c', 'd' };
 
// [...]
 
PrivateType pt = new PrivateType(typeof(MaClasse));
pt.InvokeStatic(
    "MaMethode",
    new Type[] { typeof(List<char>), typeof(ObservableCollection<char>) },
    new object[] { p1, p2},
    new Type[] { typeof(char) }
 );
 
// [...]
Le problème, c'est qu'au débogage la méthode InvokeStatic() me génère une exception 'System.ArgumentException'. J'ai tenté autre chose avec la méthode InvokeStatic() (voir ci-dessous), mais rien n'y fait, j'ai toujours une exception.

Est-ce que l'un d'entre vous aurait une solution, s'il vous plait ?
Je pense que le soucis vient de mes paramètres dans la méthode InvokeStatic(), et plus particulièrement à cause du type générique utilisé dans la méthode appelée.

Mon autre tentative :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
pt.InvokeStatic(
    "MaMethode",
    new Type[] { typeof(List<>), typeof(ObservableCollection<>) },
    new object[] { p1, p2},
    new Type[] { typeof(char) }
 );