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/

10-11 02:14