我想创建一组非常相似的类,并且可以强制转换为其他类型。我的想法是,我将创建一个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。也许这无法完成,或者我没有正确执行。任何输入将不胜感激。

最佳答案

这是因为您可以将MyCustom1MyCustom2强制转换为MyBase,但不一定要采用其他方式。

通过MyBase创建MyBase b = new MyBase();时,bMyBase而不是MyCustom2,因此将b强制转换为MyCustom2将会失败。

您可以做的是:

MyBase b = new MyCustom2();
MyCustom2 c = b as MyCustom2();


您不能做的是:

MyBase b = new MyCustom2();
MyCustom1 c = b as MyCustom1();

07-24 21:31