【发布时间】:2017-11-05 17:22:48
【问题描述】:
是否可以在派生类中更改基类字段数据类型和值,仍然调用基类方法但使用派生类值?
示例代码:
public class class1
{
protected DBContext DB { get; set; }
public A()
{
DB = new DBContext();
}
public virtual DBRecord find(int id)
{
return DB.DBRecord.Find(id);
}
}
public class class2 : class2
{
protected DifferentDBContext DB { get; set; }
public B()
{
DB = new DifferentDBContext();
}
}
然后我尝试使用下面的代码调用该方法。
class2 x = new class2();
x.find(1); // calls the base class method with base class field values
根据发生的情况,它使用基类变量调用基类方法。我想知道是否可以在派生类中设置字段类型/值,然后调用基类方法?因为它们只是具有相同的实现,只是使用了不同的值。
到目前为止我所做的(我觉得这太多余了)并且正在工作。
public class class2 : class1
{
//Other implementations omitted
public override DBRecord find(int id)
{
return DB.DBRecord.Find(id);
}
}
注意:这可能只是一个简单的 OOP 原则,但你知道,人们有时会对此感到困惑,就像我一样 :-)
【问题讨论】:
-
我问这个的原因是我看到很多机会在我想做的事情中发生,我不能只是一遍又一遍地重复相同的代码。
标签: c# oop inheritance