📜  var class vala - 任何代码示例

📅  最后修改于: 2022-03-11 14:55:24.939000             🧑  作者: Mango

代码示例1
4

You can reflect a type by name using var t = Type.from_name(classname);, however, this works on all types, including enums and structs and it might be the type Type.INVALID. You should probably do some checks, like t.is_a(typeof(MyParentClass)).

You can then instantiate a copy using var obj = Object.new(t);. The whole thing would look like:

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

It's also worth noting that the run-time type names have the namespace prepended, so you might want to do "MyNs" + classname. You can check in either the generated C or doing typeof(MyClass).name(