系统相关
首页 > 系统相关> > linux – Vala:将String作为Class传递

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