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