1 interface IFoo<in T>
2 {
Bar(T t)3 	string Bar (T t);
4 }
5 
6 class Foo : IFoo<object>
7 {
Bar(object t)8 	public string Bar (object t)
9 	{
10 		return t.GetType ().FullName;
11 	}
12 }
13 
14 public class Test
15 {
Main()16 	public static int Main ()
17 	{
18 		IFoo<object> foo = new Foo ();
19 		IFoo<string> foo2 = foo;
20 
21 		if (foo2.Bar ("blah") != typeof (string).FullName)
22 			return 1;
23 
24 		foo2 = new Foo();
25 		if (foo2.Bar ("blah") != typeof (string).FullName)
26 			return 2;
27 
28 
29 		return 0;
30 	}
31 }
32