using System;

namespace Test
{
	public class BaseContext
	{
	}

	public class MyDataContext : BaseContext
	{
	}

	public abstract class Entity<T>
	{
	}

	public class Person : Entity<MyDataContext>
	{
	}

	public sealed class TheBox<T> where T : BaseContext
	{
		public U GetById<U> (Guid entityId) where U : Entity<T>
		{
			return null;
		}
	}

	public class Program
	{
		public static void Main ()
		{
			TheBox<MyDataContext> dc = new TheBox<MyDataContext> ();
			dc.GetById<Person> (Guid.NewGuid ());
		}
	}
}