WebOrb - 将对象序列化为字符串

时间:2010-03-09 23:26:46

标签: .net flex weborb

我们有一个Adobe Flex客户端使用WebORB与.NET服务器通信。简化事情,在.NET方面我们有一个包含这样的ulong的结构:

public struct MyStruct
{
    private ulong _val;

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

    // Parse method
}

一堂课:

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端编写自定义序列化器?

3 个答案:

答案 0 :(得分:2)

随着WebORB for .NET 4.0的发布,出现了新的文档。请访问:

http://www.themidnightcoders.com/fileadmin/docs/dotnet/v4/guide/index.html?serializationoverview.htm

本文档的这一部分介绍了序列化,您可以深入了解有关自定义序列化的更多详细信息。

希望这能帮到你!

干杯, 凯瑟琳

答案 1 :(得分:1)

为什么不重载DoStuff函数以允许字符串或MyStruct作为第二个参数并在那里明确处理它?

虽然你肯定可以为这个类构建自己的自定义序列化程序,但是文档很糟糕。

您将构建一个实现WebOrb的ITypeWriter的自定义类型编写器 公共接口ITypeWriter   {      void write(object obj,IProtocolFormatter writer);      bool isReferenceableType();   }

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

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

它有点棘手,但绝对可行,如果您需要更多帮助,请告诉我,我可以提供一些我编写的自定义序列化器。同时在雅虎flashorb组中搜索IProtocolFormatter,这应该会出现相当多的问题。但是你应该对一个简单的函数重载很好:-P

答案 2 :(得分:1)

如果为您的结构创建TypeConverter,WebOrb应该选择它并将其用于转换。