将基类的返回值强制转换为继承的类

时间:2014-02-28 07:23:16

标签: c# inheritance

我目前正在玩继承方法。现在我有一个名为“BaseData”的基类,它被其他4个类继承,其中一个是Category。

我在BaseData中有一个辅助方法,它当前返回BaseData的数据类型。我能够从继承的类中调用helper方法,但我向它添加了一个类似的转换。现在我明白,即使Category继承自BaseData,它们也是两个完全不同的类。有没有正确的方法来做我想做的事情?或者甚至可能吗?

我的基类看起来像这样

public class DataBase
{
    // Accessors and stuff

    internal static DataBase BindDataToInstance(DataRow dr)
    {
        var condition = new DataBase()
        {
            ID = (string)dr["ID"],
            Title = (string)dr["Title"],
            Description = (string)dr["Description"]
        };
        return condition;
    }


}

我正在考虑通过

调用方法
    public class Condition : BaseData
    {
       public static Condition GetCondition()
       {

        return (Condition)BindDataToInstance(ConditionDal.GetCondition(conditionId));

       }

提前致谢!

编辑:基本上,我想获取基类的实例并将其转换为派生类的实例

Spook Kruger建议的代码就是我目前正在使用的代码 - 每个类一个BindDataToInstance方法。除返回类型外,每个都完全相同。

1 个答案:

答案 0 :(得分:0)

我建议你阅读有关多态和继承的内容。您尝试做的可能取决于您的继承结构,遗憾的是您的代码几乎没有提供有关这些类如何绑定在一起的信息。

我解决你的中间问题的建议是使用包装器。如果Condition将DataBase作为参数接受并设置所有必需的值,则可以执行此操作:

public static Condition GetCondition()
{

    return new Condition(BindDataToInstance(ConditionDal.GetCondition(conditionId)));

}