2009-11-14 6 views
1

Quelqu'un peut-il m'aider à résoudre cette erreur de compilation?Strange C# erreur du compilateur

J'ai une classe comme ce

public class Test { 
    public delegate void TestAction<T>(T arg); 
    public delegate void TestActionCaller<T1, T2>(T1 arg, TestAction<T2> action); 

    public static void Call<T1,T2>(TestActionCaller<T1,T2> actioncaller) { 
     actioncaller(default(T1), arg => { }); 
    } 
} 

J'ai le code suivant

public class TestCaller { 
    static TestCaller() { 
     Test.Call<int, int>((arg,action)=>action(arg)); 
    } 
} 

Cela fonctionne très bien.

Mais si je déplace le TestCaller vers un autre assembly (exactement le même code que ci-dessus), j'obtiens une erreur de compilation "Delegate 'TestAction' ne prend pas '1' arguments."

Répondre

2

je crois que le compilateur ne peut pas déduire les paramètres et vous devez spécifier explicitement leur type:

Test.Call((int arg, TestAction<int> action) => action(arg)); 
+0

doh, pourquoi ne pas je teste ça. Ça a marché. Merci – adrianm