У меня есть класс C # с перегруженными статическими методами, такими как:
// 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;
}
Я получаю ошибку, когда пытаюсь вызвать их из IronPython 2.6.Я передаю список python, содержащий строки.
import clr
clr.AddReferenceToFile("csextend.dll")
import Simple
Simple.Foo(["alpha", "bravo", "charlie"])
TypeError: Multiple targets could match: Foo(IEnumerable[str]), Foo(IEnumerable[
int])
Мой первый вопрос: почему это не работает?Кажется, что разрешение перегрузки должно работать на этом.Это ошибка в IronPython?Какой самый чистый обходной путь.Я мог бы переименовать подпрограммы, чтобы они не перегружали друг друга, но тогда я позволю причудам ironpython изменить дизайн класса C #.
Есть ли чистый способ дать Python подсказку, что список полностью состоит из одного типа, и что он должен выбрать определенную перегрузку?
Относится к этому вопросу