Return grpc C# 中的枚举类型
Return Enum type in grpc C#
我写了一个 grpc 服务,return在其中一个服务上有一个枚举类型的消息
GRPC 原型:
syntax = "proto3";
package TeamWaveNetworkPackage;
message Member{
string MemberId = 1;
string MemberEmail = 2;
string MemberPassphar = 3;
string MemberFullName = 4;
string MemberPhoto = 5;
}
message NoneTransportResponce{
enum Responce{
UserCreated = 0;
}
}
service AuthurationService{
rpc SignInUser(Member) returns(NoneTransportResponce);
}
当我想 return 响应时:
public override async Task<NoneTransportResponce> SignUpUser(Member member, ServerCallContext context)
{
if (MemberAsistant.AddMember(member))
{
return await Task.FromResult(NoneTransportResponce.Types.Responce.UserCreated);
}
else
{
return null;
}
}
错误:
无法将类型 'TeamWaveNetworkPackage.NoneTransportResponce.Types.Responce' 隐式转换为 'TeamWaveNetworkPackage.NoneTransportResponce'
如何return在响应中枚举类型????
首先,请注意您的 NoneTransportResponce
类型是空的;它实际上 没有 每个实例 Responce
字段;为此,您需要类似的东西:
message NoneTransportResponce{
Responce responceType = 1;
enum Responce{
UserCreated = 0;
}
}
那么你应该可以使用(因为你需要 return 一条 NoneTransportResponce
消息,而不是 NoneTransportResponce.Responce
枚举值):
if (MemberAsistant.AddMember(member))
{
return new NoneTransportResponce
{
ResponceType = Responce.UserCreated
};
}
或非常相似的东西。请注意,您不需要 Task.FromResult
等,除非您根本没有异步代码,在这种情况下,删除 async
并使用 return Task.FromResult(new NoneTransportResponce {...});
.
我写了一个 grpc 服务,return在其中一个服务上有一个枚举类型的消息
GRPC 原型:
syntax = "proto3";
package TeamWaveNetworkPackage;
message Member{
string MemberId = 1;
string MemberEmail = 2;
string MemberPassphar = 3;
string MemberFullName = 4;
string MemberPhoto = 5;
}
message NoneTransportResponce{
enum Responce{
UserCreated = 0;
}
}
service AuthurationService{
rpc SignInUser(Member) returns(NoneTransportResponce);
}
当我想 return 响应时:
public override async Task<NoneTransportResponce> SignUpUser(Member member, ServerCallContext context)
{
if (MemberAsistant.AddMember(member))
{
return await Task.FromResult(NoneTransportResponce.Types.Responce.UserCreated);
}
else
{
return null;
}
}
错误: 无法将类型 'TeamWaveNetworkPackage.NoneTransportResponce.Types.Responce' 隐式转换为 'TeamWaveNetworkPackage.NoneTransportResponce'
如何return在响应中枚举类型????
首先,请注意您的 NoneTransportResponce
类型是空的;它实际上 没有 每个实例 Responce
字段;为此,您需要类似的东西:
message NoneTransportResponce{
Responce responceType = 1;
enum Responce{
UserCreated = 0;
}
}
那么你应该可以使用(因为你需要 return 一条 NoneTransportResponce
消息,而不是 NoneTransportResponce.Responce
枚举值):
if (MemberAsistant.AddMember(member))
{
return new NoneTransportResponce
{
ResponceType = Responce.UserCreated
};
}
或非常相似的东西。请注意,您不需要 Task.FromResult
等,除非您根本没有异步代码,在这种情况下,删除 async
并使用 return Task.FromResult(new NoneTransportResponce {...});
.