属性 或 RepeatedField 类型的索引器无法分配给 — 它是只读的
Property or indexer of type RepeatedField cannot be assigned to — it is read only
我是 Google ProtoBuf 文件的新手。我在 ProtoBuf 文件中有以下消息。
message AvailabilityOfLockersResp{
uint32 NumberOfAvailableLockers;
repeated uint32 lockerIds = 1;
}
我已经使用 protoc.exe
生成了相应的 ProtoBuf C# class 并将生成的 C# class 文件添加到我的 .NET 项目文件中。
当我为生成的 LockerIds
字段赋值时,出现错误“属性 或索引器 'AvailabilityOfLockersResp.LockerIds' 无法分配给 -- 它是只读的”:
它告诉我这是一个只读字段。但是,我想为这个字段赋值。如何向该字段添加内容?
我找到了我上面提出的问题的答案。
List<uint> lockerIds = new List<uint>();
ProtoPacket protoPacketResponse = new ProtoPacket
{
AvailabilityOfLockersResp = new AvailabilityOfLockersResp { NumberOfAvailableLockers = (uint)lockerIds.Count() }//LockerIds = lockerIds,
};
在新实例之外,我已将值分配给 LockerIds,如下所示,
protoPacketResponse.AvailabilityOfLockersResp.LockerIds.AddRange(lockerIds);
AvailabilityOfLockersResp avail = new AvailabilityOfLockersResp();
avail.LockerIds.AddRange(new List<int>{1,2,3});
我是 Google ProtoBuf 文件的新手。我在 ProtoBuf 文件中有以下消息。
message AvailabilityOfLockersResp{
uint32 NumberOfAvailableLockers;
repeated uint32 lockerIds = 1;
}
我已经使用 protoc.exe
生成了相应的 ProtoBuf C# class 并将生成的 C# class 文件添加到我的 .NET 项目文件中。
当我为生成的 LockerIds
字段赋值时,出现错误“属性 或索引器 'AvailabilityOfLockersResp.LockerIds' 无法分配给 -- 它是只读的”:
它告诉我这是一个只读字段。但是,我想为这个字段赋值。如何向该字段添加内容?
我找到了我上面提出的问题的答案。
List<uint> lockerIds = new List<uint>();
ProtoPacket protoPacketResponse = new ProtoPacket
{
AvailabilityOfLockersResp = new AvailabilityOfLockersResp { NumberOfAvailableLockers = (uint)lockerIds.Count() }//LockerIds = lockerIds,
};
在新实例之外,我已将值分配给 LockerIds,如下所示,
protoPacketResponse.AvailabilityOfLockersResp.LockerIds.AddRange(lockerIds);
AvailabilityOfLockersResp avail = new AvailabilityOfLockersResp();
avail.LockerIds.AddRange(new List<int>{1,2,3});