Mehrdeutiger Methodenaufruf mit Überladung des Parameters Action <T>

Beim Aufrufen einer überladenen Methode mit einem anderen Compiler ist ein unerwartetes Verhalten aufgetretenAction<T> Variationen.

Nehmen wir an, ich habe diese KlasseTest und ich erstelle seine Instanz in derCallTest Konstrukteur.

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)
    {

    }    
}

Beim anrufen derTest Konstruktor mit entwederTestDecimal oderTestLong Als Parameter erhalte ich folgende Fehlermeldung:

Der Aufruf ist zwischen den folgenden Methoden oder Eigenschaften nicht eindeutig: 'Test(System.Action<long>)' und 'Test(System.Action<decimal>)'

Ich vermute, dass zwischen den beiden eine implizite Konvertierung stattfindetlong unddecimal, aber hat jemand eine andere idee was ich falsch gemacht haben könnte? Gibt es eine Problemumgehung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage