KSFramework配置表:扩展表格解析类型

本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/5675348.html



解析和扩展表格#

配置表示例#

配置表模块在编译时,把Excel转化成TSV,并根据Excel的头部信息,生成对应的代码
比如源码库中的Test.xlsx Excel文件,两个列头,IdValue,其下的列头信息标注其分别是stringI18N。 这是对这两个列的类型声明。

图:列Id注明是string类型,列Value注明是I18N类型

生成配置表代码#

在生成代码的时候,会把其类型作为代码的一部分,写入到代码中:

Copy
/// <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; }

其中,生成的代码,总结生成的核心是:

Copy
// 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提供了stringintbool等常见类型的解析方法,而像I18N这样的一个类,则是通过C#的扩展功能,扩展KEngine中的TableRow类型,来自定义解析配置表读取的方法。

Copy
// 定义类 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); } }

这样做之后,配置表自动生成的代码就能正确的按照你自定义的方法进行解析了:

Copy
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:Unity3D开发框架快速入门

KEngine策划指南:配置表格的编辑与编译

KEngine:Unity3D资源的打包、加载、调试监控

KSFramework常见问题:Lua脚本热重载,内存状态数据丢失?

作者:赵青青   一名在【网易游戏】做游戏开发的程序员,擅长Unity3D,游戏开发,.NET等领域。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
posted @   赵青青  阅读(1083)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验
历史上的今天:
2014-07-16 Unity[C#] Reflection Use
2014-07-16 Unity By Reflection Update Scripts
2014-07-16 Dictionary CovertTo List
CONTENTS
点击右上角即可分享
微信分享提示