using System;
using System.Reflection;
using System.Collections.Generic;
using System.Text;

namespace AppDomainSample
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("[{0}] uruchamia główną aplikację.",
            AppDomain.CurrentDomain.FriendlyName);
         Console.WriteLine("Główna domena aplikacji ma załadowanych zestawów: {0}.",
            AppDomain.CurrentDomain.GetAssemblies().Length.ToString());

         AppDomain ad = AppDomain.CreateDomain("DomenaWykonawcza");
         ad.SetData("WARTOŚĆ", "Chrząszcz brzmi w trzcinie w Szczebrzeszynie...");
         SecondaryCode.Class1 remoteType =
         (SecondaryCode.Class1)ad.CreateInstanceFromAndUnwrap("SecondaryCode.dll",
         "SecondaryCode.Class1");

         remoteType.DoWork();
         AppDomain.Unload(ad);

         Console.ReadLine();
      }
   }
}
