Akka. net - удаленная сериализация Bitmap - PullRequest
0 голосов
/ 22 апреля 2020

Я разрабатываю удаленное приложение Akka. net, в котором актеры используют подобные сообщения.

public class FrameMessage
{
    public string SourceName { get; set; }
    public DateTime DateTime { get; set; }
    public Bitmap Image {get; set;}
}

И сериализатор, и Hyperion по умолчанию не работают при сериализации / десериализации System.Drawing.Bitmap. object.

Мне кажется, мне нужен специальный специальный сериализатор, выделенный для объекта Bitmap внутри объекта FrameMessage, я прав? Я обнаружил, что эти два метода могут помочь:

public override byte[] ToBinary(object obj)
    {
        if (obj == null) return null;
        using (MemoryStream ms = new MemoryStream())
        {
            Bitmap bitmap = (Bitmap)obj;
            bitmap.Save(ms, ImageFormat.Bmp);
            return ms.ToArray();
        }
    }

    public override object FromBinary(byte[] bytes, Type type)
    {
        if (bytes == null)
        {
            return null;
        }
        else
        {
            using (MemoryStream ms = new MemoryStream(bytes))
            {
                return (Bitmap)Image.FromStream(ms);
            }
        }
    }

, но я не могу понять, возможно ли настроить только один конкретный сериализатор для определенного объекта внутри объекта сообщения. Фактически мне удалось настроить настраиваемый сериализатор для всего объекта сообщения, но не для свойства Bitmap.

Есть идеи?

...