{{- $proxy := .}}{{$sheetProxy := $proxy.SheetProxy -}}{{- $ctx := $sheetProxy.ProtoCtx -}}
{{- $clsName := $proxy.ClassName}}{{$fields := $proxy.GetFields -}}
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was auto-generated by ExcelExporter
//     version 2.0
//     from https://github.com/xuzhuoxi/ExcelExporter 
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

package {{$proxy.Namespace}} {
    /**
     * {{$proxy.ClassRemark}}
     */
    public class {{$proxy.ClassName}} {
        // ProtoId
        public static const ProtoId : {{$proxy.ProtoIdDataType}} = {{$proxy.ProtoId}};

		{{- range $index, $value := $fields}}
        /**
         * {{$value.Remark}}
         */
        private var _{{ToLowerCamelCase $value.Name}} : {{$value.LangType}};
		{{- end}}

        // Get方法 --------------

        {{- range $index, $value := $fields}}
        /**
         * {{$value.Remark}}
         */
        public function get {{ToLowerCamelCase $value.Name}}() : {{$value.LangType}} {
            return this._{{ToLowerCamelCase $value.Name}};
        }
        {{- end}}

        // 以下为解释数据方法 --------------

        // Json数据解释
        public function fromJsonOverride(data: Object): void {
            // 以下为从 Json数据代理 中解释出字段数据
            {{- range $index, $value := $fields}}
            {{- if $value.IsCustomType}}
            this._{{ToLowerCamelCase $value.Name}} = {{$value.LangType}}.fromJson(data.{{$value.Name}});
            {{- else}}{{$define := $value.LangTypeDefine}}
            this._{{ToLowerCamelCase $value.Name}} = {{$value.LangType}}(data.{{$value.Name}});
            {{- end}}
            {{- end}}
        }

        // 二进制数据解释
        public function fromBinaryOverride(proxy: BinaryReaderProxy): void {
            // 以下为从 二进制数据代理 中解释出字段数据
            {{- range $index, $value := $fields}}
            {{- if $value.IsCustomType}}
            this._{{ToLowerCamelCase $value.Name}} = {{$value.LangType}}.fromBinary(proxy);
            {{- else}}{{$define := $value.LangTypeDefine}}
            this._{{ToLowerCamelCase $value.Name}} = {{$value.LangType}}(proxy.{{$define.GetGetOperate "bin"}}());
            {{- end}}
            {{- end}}
        }

        // 以下为静态实例化 --------------

        public static function fromJson(data: Object): {{$clsName}} {
            var rs:{{$clsName}} = new {{$clsName}}();
            rs.fromJsonOverride(data);
            return rs;
        }

        public static function fromBinary(proxy: BinaryReaderProxy): {{$clsName}} {
            var rs:{{$clsName}} = new {{$clsName}}();
            rs.fromBinaryOverride(proxy);
            return rs;
        }
    }
}
