Неоднозначный вызов метода с перегрузкой параметра Action <T>
Я столкнулся с неожиданным поведением компилятора при вызове перегруженного метода с другимAction<T>
вариации.
Допустим, у меня есть этот классTest
и я создаю свой экземпляр вCallTest
конструктор.
public class Test
{
public Test(Action<long> arg)
{
}
public Test(Action<decimal> arg)
{
}
}
public class CallTest
{
public CallTest()
{
Test t = new Test(TestDecimal);
}
public void TestDecimal(decimal arg)
{
}
public void TestLong(long arg)
{
}
}
При вызовеTest
конструктор с любымTestDecimal
или жеTestLong
в качестве параметра я получаю следующую ошибку:
Вызов неоднозначен между следующими методами или свойствами: 'Test(System.Action<long>)
' а также 'Test(System.Action<decimal>)
'
Я предполагаю, что между неким неявным преобразованием происходитlong
а такжеdecimal
, но есть ли у кого-нибудь еще идеи, что я мог сделать не так? Есть ли обходной путь?