WebOrb - Сериализация объекта в виде строки - PullRequest
2 голосов
/ 10 марта 2010

У нас есть клиент Adobe Flex, который общается с сервером .NET с помощью WebORB. Упрощение вещей. На стороне .NET мы имеем структуру, которая заключает в себе нечто подобное:

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, но документации немного. Это возможно? Если так, то как?

Я думаю, что смогу решить, как его сериализовать, но не иначе. Нужно ли мне писать Custom Serializer на конце Flex?

Ответы [ 3 ]

2 голосов
/ 07 сентября 2010

С выходом WebORB для .NET 4.0 вышла новая документация. Пожалуйста, посетите:

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

Этот раздел документации посвящен сериализации, и вы можете перейти к более подробной информации о пользовательской сериализации.

Надеюсь, это поможет вам!

Ура, Кэтлин

1 голос
/ 25 марта 2010

Если вы создаете TypeConverter для своей структуры, WebOrb должен взять ее и использовать для преобразования.

1 голос
/ 25 марта 2010

почему бы просто не перегрузить функцию DoStuff, чтобы разрешить строку или MyStruct в качестве второго параметра, и там явно разобраться с этим?

Хотя вы определенно можете создать свой собственный сериализатор для класса, и да, документация отстой на этом.

Вы бы построили пользовательский тип записи, который реализует ITypeWriter WebOrb открытый интерфейс ITypeWriter { void write (объект obj, писатель IProtocolFormatter); bool isReferenceableType (); }

и сопоставьте тип с помощью Weborb.Writer.MessageWriter.AddTypeWriter (Type mappedType, ITypeWriter typeWriter);

или сопоставьте его через weborb.config или консоль управления.

это немного сложно, но определенно выполнимо, если вам нужна дополнительная помощь, дайте мне знать, и я могу предоставить пару пользовательских сериализаторов, которые я написал. Также поищите IProtocolFormatter в группе yahoo flashorb, и это должно немного сработать. Но вы должны быть в порядке с простой перегрузкой функции: -P

...