KSFramework配置表:扩展表格解析类型
解析和扩展表格
配置表示例
配置表模块在编译时,把Excel转化成TSV,并根据Excel的头部信息,生成对应的代码;
比如源码库中的Test.xlsx Excel文件,两个列头,Id
和Value
,其下的列头信息标注其分别是string
和I18N
。 这是对这两个列的类型声明。
图:列Id注明是string类型,列Value注明是I18N类型
生成配置表代码
在生成代码的时候,会把其类型作为代码的一部分,写入到代码中:
/// <summary>
/// Auto Generate for Tab File: "Test.bytes"
/// Singleton class for less memory use
/// </summary>
public partial class TestSetting : TableRowParser
{
/// <summary>
/// ID Column/编号/主键
/// </summary>
public string Id { get; private set;}
/// <summary>
/// Name/名字
/// </summary>
public I18N Value { get; private set;}
internal TestSetting(TableRow row)
{
Reload(row);
}
internal void Reload(TableRow row)
{
Id = row.Get_string(row.Values[0], "");
Value = row.Get_I18N(row.Values[1], "");
}
/// <summary>
/// Get PrimaryKey from a table row
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
public static string ParsePrimaryKey(TableRow row)
{
var primaryKey = row.Get_string(row.Values[0], "");
return primaryKey;
}
其中,生成的代码,总结生成的核心是:
// string // string
string Id = row.Get_string(row.Values[0], "");
// I18N // I18N
I18N Value = row.Get_I18N(row.Values[1], "");
代码中,会引用I18N类Get_I18N
方法。
扩展I18N类
默认情况,KEngine的TableRowParser提供了string
、int
、bool
等常见类型的解析方法,而像I18N这样的一个类,则是通过C#的扩展功能,扩展KEngine中的TableRow类型,来自定义解析配置表读取的方法。
// 定义类
public class I18N
{
public I18N(str) {}
}
// 定义扩展方法
public static class I18NExtensions
{
public static I18N Get_I18N(this TableRow tableRow, string value, string defaultValue)
{
var str = tableRow.Get_string(value, defaultValue);
return new I18N(str);
}
}
这样做之后,配置表自动生成的代码就能正确的按照你自定义的方法进行解析了:
I18N Value = row.Get_I18N(row.Values[1], "");
版权说明
文/公的Kelly[mr-kelly](简书作者) Email: 23110388@qq.com
原文链接:http://www.jianshu.com/p/722c5856166f
著作权归作者所有,转载请联系作者获得授权,,并标注“简书作者”。
KSFramework系列
github地址:https://github.com/mr-kelly/KSFramework
欢迎大家到 github提issues
[KSFramework(集成U3D热重载)README](http://www.cnblogs.com/zhaoqingqing/p/5658437.html)
KSFramework常见问题:Lua脚本热重载,内存状态数据丢失?
KSFramework配置表:扩展表格解析类型的更多相关文章
- Txt格式配置表无法解析的问题——BOM
今天再次遇到同一个问题:策划给来一个Txt格式配置表,我用解析类去读取,返回的结果为空.解析类参数是:主键key,文件名fileName,错误提示errorTip. 写读取语句的时候,主键key我是直 ...
- .NET 用 Unity 依赖注入——概述注册和解析类型(1)
本文内容 Unity 概述 环境 一个真实的例子 类型注册(Type Registrations) 解析类型(Resolving Types) 跳槽,新公司使用了 Unity,初步看了一下,公司的使用 ...
- 编写antd配置表单组件
编写antd配置表单组件 整体思路 抽取formitem的配置数组:包含组件类型.名称.label名称,相关的opts和扩展的opts,传递进入组件 组件通过Form.create()进行表单创建,能 ...
- Asp.net 面向接口可扩展框架之类型转化基础服务
新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...
- 15.5 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表
点击返回:自学Zabbix之路 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表 1. Actions表 actions表记录了当触发器触发时,需要采用的动作. 2.Aler ...
- Dubbo中SPI扩展机制解析
dubbo的SPI机制类似与Java的SPI,Java的SPI会一次性的实例化所有扩展点的实现,有点显得浪费资源. dubbo的扩展机制可以方便的获取某一个想要的扩展实现,每个实现都有自己的name, ...
- 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...
- 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表 1. Actions表 ...
- Linux:DNS主、从、缓存服务器配置、DNS同步加密TSIG配置、DNS分离解析配置
DNS主服务器配置(正向解析.反向解析) 正向解析:根据主机名查找对应的IP地址.当用户访问一个域名时(不考虑hosts文件等因素),正常情况会向指定的DNS主机发送递归查询请求反向解析:根据IP地址 ...
随机推荐
- jquery easyui tabs单击刷新右键刷新
单击刷新 $(".tabs-inner").click(function(){var currTab = self.parent.$('#tabs').tabs('getSelec ...
- IE中的条件注释(转载自网络)
IE条件注释是微软从IE5开始就提供的一种非标准逻辑语句,作用是可以灵活的为不同IE版本浏览器导入不同html元素,如:样式表,html标签等.很显然这种方法的最大好处就在于属于微软官方给出的兼容解决 ...
- java--POI解析excel兼容性问题
近日,使用POI解析excel,发现2003版本的excel解析与2007版本的excel解析存在问题.特此总结: 1.所需jar包 : 2.java类代码(读取excel文件): public vo ...
- SAP 中的用户类型
在使用 SU01 维护用户时,在登录数据选项卡中会要求选择用户类型,一般我们都选择第一项 Dialog,但是其他几个选项有什么作用呢?下面我们就一一解释. 对话用户顾名思义,就是需要通过 SAP GU ...
- SharePoint 2013 初始化Ribbon选中Tab
SharePoint使用中,经常打开页面会有默认展开的Ribbon选项,有时这又不是我们需要的,所以我们就需要默认选中的项目,下面简单介绍下如何实现. 方法一 1.Dispform.aspx页面默认R ...
- [Android]使用RecyclerView替代ListView(三)
以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4268097.html 这次来使用RecyclerView实现Pinn ...
- 在GitHub上管理项目
在GitHub上管理项目 新建repository 本地目录下,在命令行里新建一个代码仓库(repository) 里面只有一个README.md 命令如下: touch README.md git ...
- 跨越千年的RSA算法
转载自http://www.matrix67.com/blog/archives/5100 数论,数学中的皇冠,最纯粹的数学.早在古希腊时代,人们就开始痴迷地研究数字,沉浸于这个几乎没有任何实用价值的 ...
- mac PHP配置
apache默认路径配置方法 apache的配置 apache已经自带了,只需如下三个命令就可以了. 开启apache服务 sudo apachectl start 停止apache服务 sudo ...
- Zend Studio 9.0.4 新建项目
PHP IDE一直在用zendstudio5.5版 ,虽然写代码没啥问题,但官方版本已经到10了,尝试一下吧! 打开zend studio 10, FILE -> NEW -> PROJE ...