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?