Take a look at this blog entry: http://odetocode.com/Blogs/scott/archive/2006/09/11/6546.aspx

The code can be changed to work:

using System;

public class Client : MarshalByRefObject
{
public delegate void MessageCallBack();








static String msg = "Login";
public MessageCallBack Callback = new MessageCallBack(delegate { Console.WriteLine(msg);});



static void Main()
{
AppDomain ad = AppDomain.CreateDomain("ServerDomain");
Client client = (Client)ad.CreateInstanceAndUnwrap(typeof(Client).Assembly.FullName, "Client");
client.SendMessage(client.Callback);
}

public void SendMessage(MessageCallBack callback)
{
callback();
}
}