linux-packaging-mono/mono/tests/generic-marshalbyref.2.cs
Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

82 lines
1.4 KiB
C#

using System;
static class Program
{
static int Main()
{
DocumentForm<object> browseForm = new DocumentForm<object> ();
if (browseForm.DoInit () != 248)
return 1;
var domain = AppDomain.CreateDomain ("foo");
var engine = Engine.CreateRemote (domain);
if (engine.GetDomainName<object> () != "foo")
return 2;
return 0;
}
}
public abstract class EntityBase
{
}
public class GenEntity<T> : EntityBase
{
}
class DocumentForm<T>
{
internal int DoInit()
{
var g = new Grid1<GenEntity<T>>(123);
var g2 = new Grid2<GenEntity<T>>(123);
return g.num + g2.num;
}
}
public class Grid1<TEntity> : MarshalByRefObject
{
public int num;
public Grid1 (int i)
{
num = i + 1;
}
}
public class Grid2<TEntity> : MarshalByRefObject where TEntity : EntityBase, new()
{
public int num;
public Grid2 (int i)
{
num = i + 1;
}
}
public class Engine : MarshalByRefObject
{
public Engine ()
{
}
public string GetDomainName<T> ()
{
return AppDomain.CurrentDomain.FriendlyName;
}
public string GetDomainName ()
{
return AppDomain.CurrentDomain.FriendlyName;
}
public static Engine CreateRemote (AppDomain domain)
{
return (Engine) domain.CreateInstanceAndUnwrap (
typeof (Engine).Assembly.FullName,
typeof (Engine).FullName);
}
}