Неоднозначный вызов метода с перегрузкой параметра 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, но есть ли у кого-нибудь еще идеи, что я мог сделать не так? Есть ли обходной путь?

Ответы на вопрос(3)

Ваш ответ на вопрос