gpt4 book ai didi

linux - Vala:将字符串作为类传递

转载 作者:可可西里 更新时间:2023-11-01 11:49:51 24 4
gpt4 key购买 nike

场景:我有 x 个类(class)。让我们说 10;每个类都有不同的 UI 功能。当用户加载文件时,该扩展名会告诉程序要加载的类名;但它是以字符串的形式。

有没有办法将一个字符串作为类名传递出去?影响的东西。

 var classname = "Booger";

var nose = new classname(){ //classname really means "Booger"
//Do Operation
}

最佳答案

您可以使用 var t = Type.from_name(classname); 按名称反射(reflect)类型,但是,这适用于所有 类型,包括枚举和结构可能是 Type.INVALID 类型。您可能应该做一些检查,例如 t.is_a(typeof(MyParentClass))

然后您可以使用 var obj = Object.new(t); 实例化一个副本。整个事情看起来像:

var classname = "Booger";
var t = Type.from_name(classname);
if (t.is_a(typeof(MyParentClass)))
return Object.new(t);
else
return null;

还值得注意的是,运行时类型名称前面有命名空间,因此您可能想要执行 "MyNs"+ classname。您可以 checkin 生成的 C 或执行 typeof(MyClass).name()

关于linux - Vala:将字符串作为类传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com