IInvocationBinder throws or returns empty array inconsistently
- Dominant language
- C#
- Stars
- 38.4k
- Forks
- 10.9k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 290
Description
In writing my own `IHubProtocol` implementation, I found that when a method is invoked, there is no good way to determine whether a method exists with the `target` name to invoke. As a result, I get unhelpful exceptions thrown.
In particular, while deserializing the invocation request I need the parameter types. I call `IInvocationBinder.GetParameterTypes` passing in the name of the target method that I have already deserialized. When the method does not exist, it simply returns an empty array, causing my `BindArguments` method to throw because the number of arguments and the number of parameters mismatch. But that's a red herring. The real issue is that the method itself does not exist at all.
I notice that `IInvocationBinder.GetReturnType` _does_ throw when the target method does not exist.
Why the two diverging and undocumented policies for these two methods?
What is the best way to handle this?
https://github.com/dotnet/aspnetcore/blob/406950442014149931322f97c42e999ce03fdb71/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs#L2395-L2423
Contributor guide
Assessment
This issue has not been assessed yet.