2010-03-09 66 views
2

我们有一个Adobe Flex客户端使用WebORB与.NET服务器交谈。简化的东西,对事物的.NET方面,我们有一个包这样的ULONG一个结构:WebOrb - 将对象序列化为字符串

public struct MyStruct 
{ 
    private ulong _val; 

    public override string ToString() 
    { 
     return _val.ToString("x16"); 
    } 

    // Parse method 
} 

和A类:

public class MyClass 
{ 
    public MyStruct Info { get; set; } 
} 

我想Flex客户端处理MYSTRUCT作为一个字符串。因此,对于以下服务器的方法:

public void DoStuff(int i, MyClass b); 

它可以调用它(这里C#,因为我不知道的Flex)

MyClass c = new MyClass(); 
c.Info = "1234567890ABCDEF" 
DoStuff(1, c) 

我试着定制的WebORB串行打,但文档有点稀缺。这可能吗?如果是这样如何?

我想我可以弄清楚如何序列化它,但不是其他方式。我是否还需要在Flex端写一个自定义序列化器?

回答

1

为什么不只是重载DoStuff函数来允许一个字符串或MyStruct作为第二个参数并在那里显式处理?

虽然你一定可以为这个类构建你自己的自定义序列化程序,并且yes文档很吸引人。

你将建立一个实现的WebORB的ITypeWriter 公共界面的自定义类型作家ITypeWriter { 无效写入(obj对象,IProtocolFormatter作家); bool isReferenceableType(); }

并使用Weborb.Writer.MessageWriter.AddTypeWriter(Type mappedType,ITypeWriter typeWriter)映射该类型;

或通过weborb.config或管理控制台映射它。

这是有点棘手,但绝对可行,如果你需要更多的帮助,这让我知道,我可以提供我写的几个自定义序列化器。还搜索雅虎flashorb组的IProtocolFormatter,这应该变成相当多。但是你应该只是简单的函数过载而已:-P

+0

我过于简单化的问题和自定义序列将无法正常工作。我已经更新了这个问题,让我的想法更清晰一些。一个自定义的反序列化器和配置文件的变化将会很有帮助。 – 2010-03-24 23:12:53

+1

嘿,我会在接下来的2天内更新一个具体的例子和配置,必须从家里拉文件。 – JTtheGeek 2010-03-25 20:00:02

1

如果你为你的结构创建了一个TypeConverter WebOrb应该选择它并用它进行转换。

相关问题