0

我有一个派生自 Equipment 基类的 Face 类。在基类 (Equpiment) 中,有一个方法可以根据数据库中的 rowID 填充并返回设备对象。

在派生类(FaceClass)中,我称之为超级

public PPE_EquipmentClass GetEquipmentByRowID(Int32 rowID)
    {
        PPE_EquipmentClass Equipment = new PPE_EquipmentClass();  
        returns Equipment; 
    }

在派生类中:

 public class PPE_Face : PPE_EquipmentClass
    {

     public PPE_Face GetFaceData(Int32 rowID)
    {
         if (rowID>0)
        {
            try
            {  
               PPE_Face Face = null;
               Face = new PPE_Face();
               PPE_EquipmentClass _ppeEquip = new PPE_EquipmentClass();
               _Face =(PPE_Face) _ppeEquip.GetEquipmentByRowID(rowID);
                               }
            catch (Exception ex)
            {

                throw new Exception(ex.Message);
            }
            finally
            {

            }
        }
    }


   }  

但我不断得到

“无法将‘PPEWebApp.Classes.PPE_EquipmentClass’类型的对象转换为‘PPEWebApp.Classes.PPE_Face’类型”

我不确定为什么向下铸造不起作用,即使设备是基类。

4

1 回答 1

1

您将其实例化为 PPE_EquipmentClass 而不是 PPE_Face 类:

public PPE_EquipmentClass GetEquipmentByRowID(Int32 rowID)
{
    PPE_EquipmentClass Equipment = new PPE_EquipmentClass();  
    return Equipment; 
}

如果您希望它成为 PPE_Face,则必须将其实例化。作为父类的成员并不一定意味着您是子类的成员,在这种情况下您显然不是,因为它被实例化为新的 PPE_EquipmentClass()。你可以这样写:

public PPE_EquipmentClass GetEquipmentByRowID(Int32 rowID)
{
    PPE_EquipmentClass Equipment = new PPE_Face();  
    return Equipment; 
}

但目前尚不清楚这是否是您真正想要的。

于 2013-02-18T16:37:35.843 回答