C#
using System;
using System.Reflection;
using System.Threading;
class ConsoleApplication1
{
public static void Main()
{
// Название сборки
string exeAssembly = Assembly.GetEntryAssembly().FullName;
// заполняем свойства для 2-го домена
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
ads.DisallowBindingRedirects = false;
ads.DisallowCodeDownload = true;
ads.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
// Создаем 2-ой домен
AppDomain ad2 = AppDomain.CreateDomain("My Domain 2", null, ads);
// Создаем объект класса MyBook во 2-ом домене
MyBook book = (MyBook)ad2.CreateInstanceAndUnwrap(exeAssembly, typeof(MyBook).FullName);
// заполняем название книги
book.BookName = "Властелин колец";
// показываеи на экран книгу
book.ShowInfo();
// выгружаем 2-ой домен
AppDomain.Unload(ad2);
// book.ShowInfo();
// Если откомментировать то увидим ошибку! Потому что 2-ой домен уже выгружен
}
}
// MyBook
public class MyBook : MarshalByRefObject
{
public String BookName { get; set; }
// functions
public void ShowInfo()
{
Console.WriteLine("Название книги '{0}'", BookName);
}
}