c# - 从基类强制转换为继承类时,InvalidCastException?

标签 c# .net inheritance casting

public abstract class ContentManagedEntity
{
    public Guid Guid { get; set; }

    public bool Active;

    public int DisplayOrder;
}

public class StoreCategory : ContentManagedEntity
{
    public string Name { get; set; }
}

public class XMLStoreCategory : StoreCategory, IXMLDataEntity
{
    public bool Dirty = false;
}

void main() {
    var storecategory = new StoreCategory { Name = "Discount Stores" };
    var xmlstorecategory = (XMLStoreCategory) storecategory; // Throws InvalidCastException
}


是否有原因在运行时在最后一行抛出InvalidCastException?

(巴哈,正如我写这篇文章时,答案突然出现在我的脑海中,整日清晰。张贴出来供后代使用,只是为了确保我做对了。)

最佳答案

所有XMLStoreCategory对象都是StoreCategory,但并非所有StoreCategory都是XMLStoreCategory。在这种情况下,您要创建一个StoreCategory并尝试将其强制转换为不是。

关于c# - 从基类强制转换为继承类时,InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7393199/

相关文章:

c# - 在 C# 和 SQL 注入(inject)中创建数据库

C#:对象作为参数传递时使用的隐藏基方法。任何解决方法?

c# - 如何在 C# 中设置 Z-index(winform 应用程序)

c# - 模拟和 NetworkCredential

.net - 安装服务器后安装数据库

c++ - 虚继承应该写 "public virtual"还是 "virtual public"?

vba - 在 VBA 中实现接口(interface)的类模块中的其他方法

c# - 使用 ASP.net 打开与 MySQL 的连接

c# - 在 RavenDb 中映射减少 2 个带有子集合的集合

.net - 使用 Http WebRequest 获取 404 错误页面内容?