日期:2014-05-19  浏览次数:21041 次

泛型问题,请指教
现在有如下3个类
public   class   MyBaseClass <T>
{
}
public   class   MyIntClass   :   MyBaseClass <MyIntClass>
{
}
public   class   MyStrClass   :   MyBaseClass <MyStrClass>
{
}
object   myobj;
myobj可能属于MyIntClass,也可能属于MyStrClass。
现在想强行转换成MyBaseClass,不知能不能转,语句要如何写?
谢谢。

------解决方案--------------------
MyBaseClass <MyIntClass> 和MyBaseClass <MyStrClass> 是两个完全不同的类型,除非有一个非泛型基类MyBaseClass,否则这两个类型系统不会认为他们有什么关系,就像int和string一样。
------解决方案--------------------
这两个类其实没有任何关系..
------解决方案--------------------
public class MyClass1 <T> : MyBaseClass <T>
{
}
public class MyClass2 <T> : MyBaseClass <T>
{
}
这两方法有区别么?
------解决方案--------------------
顶!!
------解决方案--------------------
public class MyBaseClass <T>
{
public void Foo(){}
}
public class MyClass1 <T> : MyBaseClass <T>
{
}
public class MyClass2 <T> : MyBaseClass <T>
{
}
------------
这样写的话,本来就应该可以用foo方法吧..
------解决方案--------------------
(MyBaseClass <string> )myobj...

错了...应该这样...

MyClass1 和 MyClass2 的 T 类型必须相同..
------解决方案--------------------
不行,因为模版只有结合具体的T才有意义,
try
public interface youinterface
public class MyBaseClass <T> :where youinterface
{
}