2009-11-14 2 views
1

Может кто-нибудь помочь мне разобраться с этой ошибкой компилятора?Strange C# ошибка компилятора

У меня есть класс, как этот

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 => { }); 
    } 
} 

Тогда я следующий код

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

Это прекрасно работает.

Но если я переведу TestCaller на другую сборку (точно такой же код, как указано выше), я получаю ошибку компилятора «Делегат TestAction» не принимает аргументы «1».

ответ

2

Я считаю, что компилятор не может вывести параметры и вам нужно указать их тип явно:

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

DOH, почему я не проверить это. Это сработало. благодаря – adrianm

Смежные вопросы