D-Bus 接口属性的名称以数字开头的兼容方法

首先根据 D-Bus 规范,接口属性的名称必须是一个有效的 D-Bus 标识符。D-Bus 标识符必须由 ASCII 字符组成,且必须以字母或下划线('_')开头。数字不能作为标识符的开头。因此如果不是甲方爸爸必须要设置数字开头的标识符,还是不要在开源代码中添加我们的垃圾代码,保持代码的清洁性。

下述方法都是歪门邪道,请慎用。如果有其他的好方法请不要吝啬,私信我,谢谢。

方法一

在glib代码中直接修改判定非法命名。具体位置在glib-2.58.3/gobject/gparam.c文件,g_param_spec_internal函数,加入数字开头的判断。下图未修改的源码:

这种方法可能存在未知的问题,不过在我使用环境下倒是可以正常使用。如果各位在需求内进行充分测试,没有发现问题,可以尝试一下。

方法二

当设置属性名时,用其他属性名进行代替,随后在set和get的时候进行转换。例如甲方要求属性名是1GB,我们内部定义属性时xml文件中定义G1GB,我们只在对外的接口交互中使用1GB这个名字,内部编码都当作G1GB来使用。如果只有少量数字属性可以使用,如果大量的数字属性,这种方法就只能算是鸡肋。简述使用示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值