use*_*588 1 c# inheritance casting
我在C#中有一个继承自另一个产品类的产品类
using ExternalAssemb.ProductA;
public class MyProduct : ProductA
{
//....
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试从我引用的DLL中的ProductA进行显式转换,但它告诉我它无法转换
MyProduct myProduct = (MyProduct)productAobject;
Run Code Online (Sandbox Code Playgroud)
Result :: System.InvalidCastException:无法将类型为"ExternalAssemb.ProductA"的对象强制转换为"MyAssembly.MyProduct".
我究竟做错了什么?
您可以对ProductA引用进行MyProduct引用,但前提是它实际指向MyProductA或引用它.
你正在做的是试图像孩子一样对待父母,这是行不通的.相反,你可以把孩子喜欢的父母,因为它是像父.
想想一个通用示例,其中调用基类Shape并且具有诸如Square和的子类Circle.给定Shape引用,您可以为其分配任何子项.但如果引用引用a Circle,则无法将其转换为a Square.这是有道理的,因为所有圆都是形状,但没有圆是正方形.
希望这些例子有所帮助