You need to pass objects across application domain boundaries as arguments or return values.
Use marshal-by-value (MBV) or marshal-by-reference (MBR) objects.
How It Works
The .NET Remoting system (discussed in Chapter 10) makes passing objects across application domain boundaries straightforward. However, to those unfamiliar with .NET Remoting, the results can be very different from those expected. In fact, the most confusing aspect of using multiple application domains stems from the interaction with .NET Remoting and the way objects traverse application domain boundaries.
All types fall into one of three categories: nonremotable, MBV, or MBR. Nonremotable ...