[Mono-list] advanced .Net remoting: serialization formatter

Urs Muff umuff@quark.com
Tue, 25 Feb 2003 12:34:19 -0700

I have one other question:

Is there a way of installing standard serialization translation formatter to
a give channel?

What I want is the following:
System.Drawing.Image for instance is derived from MashalByRefObject, but
when a proxy version of an image is used (like Save(stream,ImageFormat.Jpeg)
or similar) the serialization fails.  Image is not marked as serializable,
but it would be very easy to do:

	public static byte[] ImageToStream(Image image)
		MemoryStream s = new MemoryStream();
		return s.GetBuffer();

	public static Image StreamToImage(byte[] image)
		return Image.FromStream(new MemoryStream(image));

But the problem is that I might have a structure like:
class ServerSide : MarshalByRefObject
	public void Method(Image image) { ... }

When I call from the client:

	ServerSide s = Activation.GetObject(...) as ServerSide;

I would like the formatter to kick in, and automatically serialize the image
to a byte[] and de-serialize back.  Is that possible on a channel formatter
level, so that I don't have to change the method signature?

This applied for other objects like object[], Hashtable, and others that
could be serialized very easily in general purpose code.