我有這樣的重載靜態方法C#類:IronPython的重載
// 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一個線索,該列表完全由一種類型組成,並且它應該選擇一個特定的超載?