可能重复:
polymorphic resolution of generic parameters in Unity registerType铸造泛型
这可能是显而易见的。但有人可以告诉我为什么这不是有效的代码?编译器说它不能将Class1<string>
转换为Class1<object>
。 这种方式是否是仿制药不允许的上传?如果是这样,为什么不呢?
namespace Test
{
public class Tests
{
public void Test()
{
Class1<object> objectClass1 = new Class1<string>();
}
}
class Class1<T>
{
}
}
这是一个常见问题,寻找协方差。这里是关于这个主题的一个线程:http://stackoverflow.com/questions/2662369/covariance-and-contravariance-real-world-example – JohnD
另请参见[我对类似问题的回答](http://stackoverflow.com/questions/4269279/polymorphic-resolution-of-generic-parameters-in-unity-registertype/4269376#4269376)解释为什么*这是不允许的。 – cdhowie