我想创建一组非常类似的类,并且可以将其转换为其他类型。我的想法是,我会创建一个接口对象,并通过一个基类来实现它。然后创建从我的基地继承的其他类。然后,我可以使用接口来处理通用(基本)方法,并将对象从BASE对象转换为自定义类型。来自接口的C#铸造类型
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。也许这不能完成,或者我没有正确地做。任何输入将不胜感激。
我怀疑是这种情况。以为我会试试这个特殊的情况,但我不确定它是否正确。感谢您的输入。 – 2012-04-04 14:43:45
那么......你*可以*做到这一点......它只会在运行时崩溃并烧毁。 'MyCustom1 c = new MyCustom2();即使有明确的转换,也不会编译。 – Servy 2012-04-04 14:47:13
是的,你*可以*做到这一点,但随着OP注意到,第二次演员的结果将是'空'。 – 2012-04-04 15:07:48