c# - .NET 代码优先 gRPC 中的 MethodName 转换
问题描述
.NET 的代码优先 gRPC 中是否有一种实用方法,用于将 gRPC 接口名称和方法名称转换为适合MethodName
内部的方法和服务名称MethodConfig
?
对于以下代码优先的 gRPC 接口方法:
Test.Project.Shared.IWidgetFactory.GetWidgetAsync()
MethodName
is预期的服务名称Test.Project.Shared.WidgetFactory
和方法名称是GetWidget
。
在构造 aMethodConfig
时,我希望调用者能够使用强类型,以尽量减少出错的机会。
我目前正在使用下面的代码手动执行此转换,但如果有现有的公共方法来执行此操作会更好。I
如果没有,除了从服务中删除前导和从方法中删除之外,是否还有其他转换Async
?
public static class GrpcMethodNameExtensions
{
public static MethodName ToGrpcMethodName(this Type service, string methodName)
{
var serviceName = service.Name;
var serviceNamespace = service.Namespace;
if (serviceName.StartsWith('I')) serviceName = serviceName[1..];
if (methodName.EndsWith("Async")) methodName = methodName[..^5];
return new MethodName
{
Service = $"{serviceNamespace}.{serviceName}",
Method = methodName
};
}
解决方案
推荐阅读
- angular - Angular - innerHTML 属性 - innerHTML 一部分的延迟
- javascript - Filepond 预览为空/不可见,即使文件已加载
- c# - 管理具有不同输出的任务
- windows - 函数接受参数,函数内部的命令看不到它
- powershell - 运行驻留在远程计算机上的 powershell 脚本?
- laravel - 如何记录模型行以仅查看模型数据?
- swift - 使用 2D 数组的 UIButton 网格
- html - 圆形滚动条
- facebook - 调用 {page-id}/Posts 端点返回权限错误,但应用程序已获得该权限的批准
- amazon-web-services - AWS Lambda 函数在 Cloudwatch 中没有日志