Macros 使用haxe中的宏从文本文件构建类的属性集

Macros 使用haxe中的宏从文本文件构建类的属性集,macros,haxe,Macros,Haxe,我试图在宏时间内从如下格式的文件构建一个类: myString;String myInt;Int myCustomClass;CustomClass 现在,我没有将模块添加到类中,因此宏必须解决它 这是我的生成器宏: class Builder { macro public static function buildController(resourcePath:String):Array<Field> { resourcePath = haxe.macro

我试图在宏时间内从如下格式的文件构建一个类:

myString;String
myInt;Int
myCustomClass;CustomClass
现在,我没有将模块添加到类中,因此宏必须解决它

这是我的生成器宏:

class Builder {
    macro public static function buildController(resourcePath:String):Array<Field> {
        resourcePath = haxe.macro.Context.resolvePath(resourcePath);
        var pos = haxe.macro.Context.currentPos();
        var fields = haxe.macro.Context.getBuildFields();

        var entries = sys.io.File.getContent(resourcePath).split("\n");

        for (e in entries) {
            var data = e.split(";");
            var varname = data[0];
            var classname = data[1];
            var packname = [];
            switch(haxe.macro.Context.getType(classname)) {
                case TInst(t,_): packname = t.get().pack;
                default: throw "Class not found";
            }
            fields.push( { name : varname
                         , doc : null
                         , meta : []
                         , access : [APrivate]
                         , kind : FVar(TPath( { pack : packname
                                              , name : classname
                                              , params : []
                                              , sub : null })
                                                  , null)
                         , pos : pos } );
        }
        return fields;
    }
}
我得到这个错误:

/usr/lib/haxe/std/haxe/macro/Context.hx:249:characters 37-45: 无效的字段访问权限:\ s Builder.hx:17:字符19-56:已调用 从Main.hx:2:字符2-7:从调用中止


如何从这样的文本文件在宏中构建属性?

我不是专家,但它看起来像类型解决问题(自定义类?)。 单独检查,字符串一个接一个,而不是数组/文件(对字符串和Int有效,对自定义无效)。 追踪TPath结果,可能会出现如下问题

@:build(Builder.buildController("./data.txt"))
class Main {
  static public function main() {}
}