interface IGen {}
class Gen<T> : IGen where T : class { }
class MoreGen<G> where G : IGen { }
public class Test
{
public static void Main()
{
new MoreGen<Gen<string>>(); // OK
new MoreGen<Gen<Test>>(); // OK
// new MoreGen<string>(); // no implicit reference conversion from `string' to `IGen'
// new MoreGen<Gen<int>>(); // The type `int' must be a reference type
}
}
aW50ZXJmYWNlIElHZW4ge30KY2xhc3MgR2VuPFQ+IDogSUdlbiB3aGVyZSBUIDogY2xhc3MgeyB9CmNsYXNzIE1vcmVHZW48Rz4gd2hlcmUgRyA6IElHZW4geyB9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJbmV3IE1vcmVHZW48R2VuPHN0cmluZz4+KCk7ICAgLy8gT0sKCQluZXcgTW9yZUdlbjxHZW48VGVzdD4+KCk7ICAgICAvLyBPSwovLwkJbmV3IE1vcmVHZW48c3RyaW5nPigpOyAgICAgICAgLy8gbm8gaW1wbGljaXQgcmVmZXJlbmNlIGNvbnZlcnNpb24gZnJvbSBgc3RyaW5nJyB0byBgSUdlbicKLy8JCW5ldyBNb3JlR2VuPEdlbjxpbnQ+PigpOyAgICAgIC8vIFRoZSB0eXBlIGBpbnQnIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZQoJfQp9