linux – Vala:将String作为Class传递
作者:互联网
场景:
我有x个班级.让我们说10;每个类都有不同的UI功能.当用户加载文件时,该扩展名告诉程序要加载的类名;但它是一个字符串的形式.
无论如何将字符串作为类名传递出去?有效的东西.
var classname = "Booger";
var nose = new classname(){ //classname really means "Booger"
//Do Operation
}
解决方法:
您可以使用var t = Type.from_name(classname);按名称反映类型,但是,这适用于所有类型,包括枚举和结构,它可能是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”类名.您可以签入生成的C或执行typeof(MyClass).name().
标签:vala,class,linux,ubuntu,gtk 来源: https://codeday.me/bug/20190901/1782760.html