我在 C# 中有一个继承自另一个产品类的产品类
using ExternalAssemb.ProductA;
public class MyProduct : ProductA
{
//....
}
我正在尝试从我引用的 DLL 中的 ProductA 进行显式转换,但它告诉我它无法转换
MyProduct myProduct = (MyProduct)productAobject;
结果::System.InvalidCastException:无法将“ExternalAssemb.ProductA”类型的对象转换为类型“MyAssembly.MyProduct”。
我做错了什么?
您可以将 ProductA
引用转换为 MyProduct
引用,但只有它实际指向 MyProductA
或其子项。
您正在做的是试图像对待 child 一样对待 parent ,这是行不通的。相反,您可以像对待 parent 一样对待 child ,因为它就像 parent 一样。
考虑一个通用示例,其中基类称为 Shape
并具有子类,例如 Square
和 Circle
。给定一个 Shape
引用,您可以将任何 child 分配给它。但是,如果引用引用的是 Circle
,则不能将其转换为 Square
。这是有道理的,因为所有圆都是形状,但没有圆是正方形。
希望示例有所帮助。
我是一名优秀的程序员,十分优秀!