#[nonvisualobject]
Expand description
生成不可视对象
§Parameters
name
: 映射的PB对象类名 (默认为Rust对象名)inherit
: 继承的对象 (此对象的字段)
§Notice
继承模式不支持覆盖(override)方法实现,并且在PB端需要将父类的方法声明在子类中重新声明
§Examples
- PowerBuilder
/* 父类声明 */
forward
global type n_parent from nonvisualobject
end type
end forward
global type n_parent from nonvisualobject native "pbrs.dll"
public function string of_hello (string world)
end type
global n_parent n_parent
type variables
end variables
on n_parent.create
call super::create
TriggerEvent( this, "constructor" )
end on
on n_parent.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
/* 子类声明 */
forward
global type n_child from n_parent
end type
end forward
global type n_child from n_parent native "pbrs.dll"
// 重新声明父类方法
public function string of_hello (string world)
// 声明子类私有的方法
public function string of_foo (string bar)
end type
global n_child n_child
type variables
end variables
on n_child.create
call super::create
TriggerEvent( this, "constructor" )
end on
on n_child.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
- Rust(pbni-rs)
struct RustObject {
session: Session,
ctx: ContextObject
}
#[nonvisualobject(name = "n_pbni")]
impl RustObject {
#[constructor]
fn new(session: Session, ctx: ContextObject) -> RustObject {
RustObject {
session,
ctx
}
}
#[method(name="of_Hello")]
fn hello(&self, world: String) -> String {
format!("hello {}!",world)
}
}
struct RustChildObject {
parent: RustObject
}
#[nonvisualobject(name = "n_pbni_child", inherit = "parent")]
impl RustChildObject {
#[constructor]
fn new(session: Session, ctx: ContextObject) -> RustChildObject {
RustChildObject {
parent : RustObject {
session,
ctx
}
}
}
#[method(name="of_Foo")]
fn foo(&self, bar: String) -> String {
format!("foo {}!",bar)
}
}