我使用Python + PyAMF的交谈来回Flex客户端,但我已经运行到与psudo-Enum的单身问题我使用:Flex:AMF和Enum Singletons - 它们可以一起玩吗?
class Type {
public static const EMPTY:Type = new Type("empty");
public static const FULL:Type = new Type("full");
...
}
当我使用本地创建的情况下,一切都桃色:
if (someInstance.type == Type.EMPTY) { /* do things */ }
但是,如果“someInstance”已经从Python代码,它的“型”的情况下显然不会是要么Type.EMPTY
或Type.FULL
。
那么,使我的代码工作的最佳方式是什么?
有什么方法可以控制AMF的反序列化,所以当它加载远程Type
时,会调用正确的转换吗?或者我应该咬下子弹,并使用==
以外的东西比较Types
?或者我可以以某种方式欺骗==
类型的凝聚力做我想做的事情?
编辑:或者,Flex的远程处理套件是否提供了在实例被反序列化后运行的任何钩子,所以我可以执行转换呢?
hhmm ...这不是一个坏主意。我甚至可以在Type的客户端中有一个getter,就像'function get type():Type {return _type.canonical; }'。谢谢! – 2009-09-16 21:16:30
现在,你提到我可以在内部进行转换...有什么方法可以自动触发转换吗? 'Remoting'工具是否提供了'这个实例被deserailiezd'类型的钩子之后? – 2009-09-16 21:17:55
我在谈论隔离层。如果您与python的通信层是隔离的(只有一个类处理来自它的消息),那么您可以在将数据传递给任何将要处理的数据之前进行转换。不知道你的代码的更多细节,很难说你把它放在哪里。 – Herms 2009-09-17 13:30:22