Errors accessing .NET class method overloads in IronPython
Asked Answered
A

1

18

I have a class I've written in C#. The class has two methods, the signatures being:

bool Navigate(string url)
bool Navigate(Uri url)

From what I gather, the IronPython runtime is supposed to try and select the best overload based on the passed-in argument. In my case, I'm passing in a string which I know to be non-null, yet I get the following exception:

Multiple targets could match: Navigate(Uri), Navigate(str)

Seeing as my argument is blatantly a string, why does IronPython insist that multiple targets could match? System.String does not cast to System.Uri and as such the second method overload should not be a viable candidate for selection...

Auld answered 30/12, 2009 at 18:8 Comment(3)
Interesting, not had this problem myself nor would I know how to advise though I'm afraid.Erase
@Nathan, I couldn't reproduce the problem. I used your two signatures, and it worked as expected. I'm using IronPython 2.6 Final.Far
There's obviously some other kind of weirdness going on in the rest of my class then. I found a workaround in the meantime, but my class is a bit too tied to my framework to easily publish it here for testing.Auld
S
4

It sounds like somehow IronPython is deciding that it can convert strings to Uris. Perhaps this is a "feature", I don't know. You could do something like the following (source):

navigate_string = myObj.Navigate.Overloads[type("")]
navigate_string("asdf")
Selenaselenate answered 4/11, 2012 at 0:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.