Code Snippet
using System;
using System.Collections.Generic;
using System.Text;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
AppDomain remoteDomain = AppDomain.CreateDomain("MyNewdomain");
Test remoteTest = (Test)remoteDomain.CreateInstanceAndUnwrap(typeof(Test).Assembly.FullName, "TestApp.Test");
if (remoteTest is Test) { Console.WriteLine("remoteTest is a Test object"); }
else { Console.WriteLine("remoteTest is NOT a Test object"); }
if (remoteTest is DerivedTest) { Console.WriteLine("remoteTest is a DerivedTest object"); }
else { Console.WriteLine("remoteTest is NOT a DerivedTest object"); }
DerivedTest remoteDerivedTest1 = (DerivedTest)remoteDomain.CreateInstanceAndUnwrap(typeof(DerivedTest).Assembly.FullName, "TestApp.DerivedTest");
if (remoteDerivedTest1 is Test) { Console.WriteLine("remoteDerivedTest1 is a Test object"); }
else { Console.WriteLine("remoteDerivedTest1 is NOT a Test object"); }
if (remoteDerivedTest1 is DerivedTest) { Console.WriteLine("remoteDerivedTest1 is a DerivedTest object"); }
else { Console.WriteLine("remoteDerivedTest1 is NOT a DerivedTest object"); }
Test remoteDerivedTest2 = (Test)remoteDomain.CreateInstanceAndUnwrap(typeof(DerivedTest).Assembly.FullName, "TestApp.DerivedTest");
if (remoteDerivedTest2 is Test) { Console.WriteLine("remoteDerivedTest2 is a Test object"); }
else { Console.WriteLine("remoteDerivedTest2 is NOT a Test object"); }
if (remoteDerivedTest2 is DerivedTest) { Console.WriteLine("remoteDerivedTest2 is a DerivedTest object"); }
else { Console.WriteLine("remoteDerivedTest2 is NOT a DerivedTest object"); }
Console.ReadLine();
}
}
public class Test : MarshalByRefObject
{
}
public class DerivedTest : Test
{
}
}