Protobuf-net判断字段是否有值
Protobuf-net判断字段是否有值
Unity3d使用Protobuf-net序列化数据与服务器通信,
但是发现默认情况下,Protobuf-net生成的cs文件中没有接口判断可选参数是否有值。
需有添加 -p:detectMissing 参数才能生成判断接口。
在C++中生成 has_*() 接口,在C#中是 *Specified() 接口。
例如 rpc.proto:
message RpcRequest {
optional uint32 id = 1; // One-way request has no id.
...
}
生成rpc.cs:
protogen -i:rpc.proto -o:%OUT_DIR%/rpc.cs
public partial class RpcRequest : global::ProtoBuf.IExtensible
{
private uint _id = default(uint);
public uint id
{
get { return _id; }
set { _id = value; }
}
...
}
添加 -p:detectMissing 参数后:
protogen -i:rpc.proto -o:%OUT_DIR%/rpc.cs -p:detectMissing
public partial class RpcRequest : global::ProtoBuf.IExtensible
{
private uint? _id;
public uint id
{
get { return _id?? default(uint); }
set { _id = value; }
}
public bool idSpecified
{
get { return this._id != null; }
set { if (value == (this._id== null)) this._id = value ? this.id : (uint?)null; }
}
private bool ShouldSerializeid() { return idSpecified; }
private void Resetid() { idSpecified = false; }
...
}
参考:
protobuf-net missing has_ function for optional fields?.
( http://stackoverflow.com/questions/18889249/protobuf-net-missing-has-function-for-optional-fields )
Issue 406: has_ functions missing in protobuf-net?
( https://code.google.com/p/protobuf-net/issues/detail?id=406 )
Protobuf-net判断字段是否有值的更多相关文章
- MySQL判断字段值来确定是否插入新记录
今天正好有个新需求,要求在一张表中,保证不插入重复的记录. 即,保证每条记录中的某个字段的值不重复. 下面是我给出的SQL语句: //存在-->更新 //不存在-->插入 UPDATE 表 ...
- ArcGIS自定义工具箱-判断字段值是否相等
ArcGIS自定义工具箱-判断字段值是否相等 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:判断两个字段值是否相等 使用方法: 结果: 联系方式:谢老师,13 ...
- sql server查询语句条件判断字段值是否为NULL
判断字段是否为null select * from table where c is null select * from table where c is not null 判断字段是否为空 ...
- C#获取EF实体对象或自定义属性类的字段名称和值
在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改前的值.修改后的值,该值对应的字段,该值对应的行id获取到保存到数据库的某张表里.现 ...
- 提取数字、英文、中文、过滤重复字符等SQL函数(含判断字段是否有中文)
--SQL 判断字段值是否有中文 create function fun_getCN(@str nvarchar(4000)) returns nvarchar(4000) a ...
- SQL 判断字段中指定字符出现的次数
原文地址:SQL 判断字段中指定字符出现的次数 原理:将指定字符转换为空,原长度减去转换后的长度就是指定字符的次数. 在做数据处理时遇到一个SQL操作的问题就是有一列关键词字段,字段中包含各种乱七八糟 ...
- 面试题:对NotNull字段插入Null值 有啥现象?
Hi,大家好!我是白日梦. 今天我要跟你分享的话题是:"对NotNull字段插入Null值有啥现象?" 一. 推荐阅读 首发地址:https://mp.weixin.qq.com/ ...
- MySQL设置字段的默认值为当前系统时间
问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录的插入时间,那么就将当前系统时间作为该记录创建的时间. 应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,应该由数据 ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
随机推荐
- 手写简单的jq雪花飘落
闲来无事,准备写个雪花飘落的效果,没有写太牛逼的特效,极大的简化了代码量,这样容易读取代码,用起来也很简单,对于那些小白简直是福利啊,简单易读易学.先直接上代码吧,然后再一一讲解,直接复制粘贴就可以拿 ...
- 剥掉层层外衣后的RPC是什么样子的?
RPC,全称为Remote Procedure Call(远程过程调用).通俗一点讲就是在本地调用远程服务器上的功能.实现远程调用至少需要满足以下几个条件: 1.网络通信 2.序列化与反序列化 3.反 ...
- [HNOI 2013]数列
Description 题库链接 给你四个数 \(N,K,M,P\) ,让你生成一段长度为 \(K\) 严格单调递增序列,并且满足: 第一位可以为任意元素: 相邻两位的差值不超过 \(M\) : 序列 ...
- [NOI2011]道路修建
题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...
- UOJ #206. 【APIO2016】Gap
Description Solution 第一个子任务,直接从 \((a[i],a[j])\) 推出 \((a[i+1],a[j-1])\) 就行了,只需要 \(\frac{N+1}{2}\) 第二个 ...
- ●POJ 2284 That Nice Euler Circuit
题链: http://poj.org/problem?id=2284 题解: 计算几何,平面图的欧拉定理 欧拉定理:设平面图的定点数为v,边数为e,面数为f,则有 v+f-e=2 即 f=e-v+2 ...
- 基于vfs实现自己的文件系统
1.Linux 文件系统组成结构 linux文件系统有两个重要的特点:一个是文件系统抽象出了一个通用文件表示层--虚拟文件系统或称做VFS.另外一个重要特点就是它的文件系统支持动态安装(或说挂载等), ...
- hdu 5442 (后缀数组)
稍微学习了下第一次用后缀数组- - , 强行凑出答案 , 感觉现在最大的问题是很多算法都不知道 ,导致有的题一点头绪都没有(就像本题). /*推荐 <后缀数组——处理字符串的有力工具>— ...
- BZOJ4574 [Zjoi2016]线段树
比较厉害的dp. 网上题解都是利用了随机的条件,用了一个$O(n^4)$的dp,这里简单说一下. 用f(x,i,l,r)表示经过前i轮操作,[l,r]的所有数<=x,且l-1和r+1都>x ...
- LAN、WAN、WLAN、WiFi之间的区别
感觉这几个概念让人傻傻分不清,下面以最常见的路由器来解释这几个概念. LAN 1 LAN,全称Local Area Network,中文名叫做局域网. 顾名思义,LAN是指在某一区域内由多台计算机 ...