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脚本热重载,内存状态数据丢失?

posted @ 2016-07-16 09:20  赵青青  阅读(1082)  评论(1编辑  收藏  举报