我想创建一组非常相似的类,并且可以强制转换为其他类型。我的想法是,我将创建一个Interface对象并通过基类实现它。然后创建从我的基础继承的其他类。然后,我可以使用该接口与通用(基本)方法一起使用,并将对象从BASE对象转换为自定义类型。
interface ImyInterface {
}
public class MyBase : ImyInterface {
}
public class MyCustom1 : MyBase {
}
public class MyCustom2 : MyBase {
}
// in helper class
public static MyBase GetGeneralOjbect() {
// get a generic base object
return new MyBase();
}
// How I'm trying to use this
MyCustom1 obj = GetGeneralOjbect() as MyCustom1;
除了强制转换对象语句外,这似乎可行。即使静态帮助程序GetGeneralOjbect返回一个良好的MyBase对象,MyCustom1始终为null。也许这无法完成,或者我没有正确执行。任何输入将不胜感激。
最佳答案
这是因为您可以将MyCustom1
或MyCustom2
强制转换为MyBase
,但不一定要采用其他方式。
通过MyBase
创建MyBase b = new MyBase();
时,b
是MyBase
而不是MyCustom2
,因此将b
强制转换为MyCustom2
将会失败。
您可以做的是:
MyBase b = new MyCustom2();
MyCustom2 c = b as MyCustom2();
您不能做的是:
MyBase b = new MyCustom2();
MyCustom1 c = b as MyCustom1();