2010-03-09 28 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應該選擇它並用它進行轉換。

相關問題