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


    解析和扩展表格

    配置表示例

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

    图:列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提供了stringintbool等常见类型的解析方法,而像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:Unity3D开发框架快速入门

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

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

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

  • 相关阅读:
    包装类型
    int 和 Integer 有什么区别
    final finally finalize区别
    java关键字final 有什么用?
    String和StringBuffer、StringBuilder的区别是什么?
    String 类的常用方法都有那些?
    Vue官网教程-计算属性和监听器
    Vue官网教程-模板语法
    Vue官网教程-实例
    Vue官网教程-介绍
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/5675348.html
Copyright © 2020-2023  润新知