次のコードがあるとします。
namespace sample
{
    class a { }
    class b : a { }
    public class wrapper<T> { }
    class test
    {
        void test1()
        {
            wrapper<a> y = new wrapper<b>();
            //Error 11  Cannot implicitly convert type 'sample.wrapper<sample.b>' to 'sample.wrapper<sample.a>' 
        }
    }
}
論理的に言えば、 abはであるためa、 awrapper<b>はwrapper<a>です。では、なぜこの変換を行うことができないのでしょうか、またはどのように行うことができますか?
ありがとう。