J'ai une classe C# avec des méthodes statiques surchargées comme celles-ci:IronPython résolution de surcharge sur les types génériques
// Added to the Simple class in Tutorial\Extend\csextend.cs
public static int Foo(IEnumerable<int> values)
{
return 1;
}
public static int Foo(IEnumerable<string> values)
{
return 2;
}
Je reçois une erreur lorsque je tente d'appeler ceux-ci de IronPython 2.6. Je passe une liste python qui contient des chaînes.
import clr
clr.AddReferenceToFile("csextend.dll")
import Simple
Simple.Foo(["alpha", "bravo", "charlie"])
TypeError: Multiple targets could match: Foo(IEnumerable[str]), Foo(IEnumerable[ int])
Ma première question est pourquoi ne pas ce travail? Il semble que la résolution de surcharge devrait fonctionner sur ceci. Est-ce un bug dans IronPython? Quelle est la solution de contournement la plus propre? Je pourrais renommer les routines pour qu'elles ne se surchargent pas, mais je laisserai alors les caprices de ironpython modifier la conception de la classe C#.
Existe-t-il un moyen propre de donner à python un indice que la liste est entièrement composée d'un type, et qu'elle devrait choisir une surcharge spécifique?
liés à this question