public void TestTypeFilterLevel()
{
// using an event handler requires type filter level Full for a remoting channel
// by default, it's low, which will fail
using (var domain = ProcessDomain.CreateDomain("Domain"))
{
var obj = (RemoteTestObject)domain.CreateInstanceAndUnwrap(TestObjectAssemblyName, TestObjectTypeName);
Assert.Throws<SecurityException>(()=> obj.CallbackEvent += () => Assert.Fail("This should have failed"));
}
// now enable the remoting channel with type filter level Full
var setup = new ProcessDomainSetup { TypeFilterLevel = TypeFilterLevel.Full };
using (var domain = ProcessDomain.CreateDomain("Domain", setup))
{
var obj = (RemoteTestObject)domain.CreateInstanceAndUnwrap(TestObjectAssemblyName, TestObjectTypeName);
obj.CalledBack = false;
Assert.That(!obj.CalledBack);
Assert.DoesNotThrow(() => obj.CallbackEvent += obj.SetCalledBack);
obj.OnCallback();
Assert.That(obj.CalledBack);
}
}