如何在 SignalR v2 客户端-服务器方法上使用 PascalCasing?

How to use PascalCasing on SignalR v2 client-server methods?

我创建了一个简单的 Hub:

public class MyHub : Hub
{
    public void Hello()
    {
        Clients.All.Hello();
    }
}

我想在客户端使用:

$.connection.myHub.server.Hello();

但是默认情况下它创建为:

$.connection.myHub.server.hello();

如何将其更改为使用 PascalCase 而不是 camelCase? (最好自动执行所有操作)

您可以使用 HubMethodNameAttribute.

手动强制每个方法的大小写
using Microsoft.AspNet.SignalR.Hubs;

public class MyHub : Hub
{
    [HubMethodName("Hello")]
    public void Hello()
    {
        Clients.All.Hello();
    }
}

如果你想在全球范围内进行这种改变,就没有那么简单了。如果您想这样做,可能需要您实现自己的 IMethodDescriptorProvider.

您可能必须代理默认 ReflectedMethodDescriptorProvider and change the names of the returned MethodDesriptors to be PascalCase. If you do this, you could then register your custom IMethodDescriptorProvider with GlobalHost.DependencyResolver