- Notifications
You must be signed in to change notification settings - Fork749
Open
Description
Environment
- Pythonnet version: 2.4.0
- Python version: 3.6.5
- Operating System: Centos
Details
Describe what you were trying to get done.
When calling .NET functions with overloads from python with keyword args, the MethodBinder.Bind method will return the first method it finds which might not be the actual method the user is trying to call. Take the following simple C# code:
publicstaticstringOptionalArgumentsMethod(intarg1,intarg2){return$"{arg1}{arg2}XX";}publicstaticstringOptionalArgumentsMethod(intarg1,intarg2,intarg3=3){return$"{arg1}{arg2}{arg3}X";}publicstaticstringOptionalArgumentsMethod(intarg1,intarg2,intarg3=4,intarg4=5){return$"{arg1}{arg2}{arg3}{arg4}";}
Calling, for example,OptionalArgumentsMethod(1, 2, arg3=5)
we expect to get back125X
but instead we see:
>>>OptionalArgumentsMethod(1,2)'12XX'>>>OptionalArgumentsMethod(1,2,3)'123X'>>>OptionalArgumentsMethod(1,2,arg3=5)'12XX'>>>OptionalArgumentsMethod(1,2,3,5)'1235'>>>OptionalArgumentsMethod(1,2,3,arg4=5)'123X'>>>OptionalArgumentsMethod(1,2,arg4=0)'12XX'
Metadata
Metadata
Assignees
Labels
No labels