首页 > 解决方案 > .NET 代码优先 gRPC 中的 MethodName 转换

问题描述

.NET 的代码优先 gRPC 中是否有一种实用方法,用于将 gRPC 接口名称和方法名称转换为适合MethodName内部的方法和服务名称MethodConfig

对于以下代码优先的 gRPC 接口方法:

MethodNameis预期的服务名称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
        };
    }

标签: c#asp.net-coregrpcgrpc-c#

解决方案


推荐阅读