gpt4 book ai didi

apache-flex - 具有自定义命名空间的 ActionScript 接口(interface)

转载 作者:行者123 更新时间:2023-12-04 16:55:18 24 4
gpt4 key购买 nike

有没有办法让界面与自定义命名空间一起玩?示例如下。

IHeaderRenderer.as:

public interface IHeaderRenderer{
function set header(value:IHeader):void;
function get header():IHeader;
}

HeaderRenderer.as
import fi.test.internalNamespace;
public class HeaderRenderer implements IHeaderRenderer{
internalNamespace function set header(value:IHeader):void{
// do something
}

internalNamespace function get header():IHeader{
// do something
}
}

这为您提供了基本的编译器错误:

1044:接口(interface)方法在 namespace fi.gridutils.headerrenderers:IHeaderRenderer 中获取头文件不是由类 fi.gridutils.headerrenderers.implementation:HeaderRenderer 实现的。

您可能会问,为什么需要这样做。我正在开发一个组件,其中的头访问器不应该对组件最终用户(开发人员)直接可见,但是如果开发人员想要创建他自己的渲染器,他应该知道它们是必需的。这是因为父组件将使用这些访问器为自定义渲染器提供正确渲染标题所需的数据。

现在在我看来似乎只有三个选择:

1) 使用公共(public)访问控制。这有一个挫折,即最终开发人员将看到访问器,而这些访问器不应由他直接访问。此外,当它们出现在自动完成中时,它们会增加不必要的困惑。

2)不使用接口(interface)。这意味着最终用户无法进一步开发组件。

3)使用接口(interface),但省略使用internalNamespace的访问器。现在最终开发人员将不知道他还应该向他的自定义 headerrenderer 类添加 header 访问器,这最终在 Flash Player 中向开发人员在运行时给出以下错误:

无法在 fi.gridutils.headerrenderers.implementation.HeaderRenderer 上创建属性 internalNamespace/::header。

对不起所有的废话。任何狡猾的想法如何处理这种情况?

最佳答案

在 ActionScript 中,接口(interface)方法需要是公共(public)的。接口(interface)有什么用,如果不能保证使用它的组件可以访问相关的接口(interface)方法?

也就是说,您可以使用排除元数据来防止属性显示在代码提示中。

像这样的东西:

[Exclude(name="header", kind="property")] 

More info

关于apache-flex - 具有自定义命名空间的 ActionScript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726208/

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