我们有一个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端编写自定义序列化器?
答案 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应该选择它并将其用于转换。