Har*_*lla 7 c# protocol-buffers .net-core google-protocol-buffer asp.net-core-2.1
我正在尝试获取我的userDTO对象列表并将其转换为protobuf候选列表,但我无法弄清楚如何做到这一点
public class UserDTO
{
public string UserNumber { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserId { get; set; }
public string EmailId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
message Candidate {
string userNumber = 1;
string userId = 2;
string firstName = 3;
string lastName = 4;
string emailId = 5;
}
message CandidateList{
repeated Candidate candidateList = 1;
}
Run Code Online (Sandbox Code Playgroud)
public CandidateList GetUsersRpc()
{
List<UserDTO> userList = _repository.GetUsersRpc();
if (userList.Count > 0)
{
foreach (var user in userList)
{
}
}
return ;
}
}
Run Code Online (Sandbox Code Playgroud)
我可能误解了这里的问题,所以请随时纠正我误解的任何部分。
如果我们使用 protobuf-net (我只是出于熟悉和方便而引用它),那么以下内容将起作用:
[ProtoContract]
public class UserDTO
{
[ProtoMember(1)]
public string UserNumber { get; set; }
[ProtoMember(3)]
public string FirstName { get; set; }
[ProtoMember(4)]
public string LastName { get; set; }
[ProtoMember(2)]
public string UserId { get; set; }
[ProtoMember(5)]
public string EmailId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后假设您已经在 a 中有数据Stream(如果使用byte[],则 aMemoryStream将起作用):
var userList = Serializer.Deserialize<List<UserDTO>>(source);
Run Code Online (Sandbox Code Playgroud)
会给你一个List<UserDTO>,(正确)假设每个元素都是一个repeated Candidatewith field 1。如果你想让我更具体,你可以通过 code-gen 运行整个原型模式来获取完整的模式 - 例如通过 protobuf-net 的protogen. 点击“生成”,您将获得一个CandidateList表示根对象的附加元素(而不是隐式的)。然后你会使用:
var root = Serializer.Deserialize<CandidateList>(source);
var userList = root.candidateLists;
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,使用相同的方法Serialize来Deserialize从输入生成 protobuf 数据。
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |