泛型问题,请指教
现在有如下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
{
}