Просто интересно, есть ли способ сделать следующее:Изменить возврат подпись через наследование - полиморфизм
public Interface IDataField
{
object GetValue();
}
public Interface IComplexDataField : IDataField
{
object GetDefaultValue();
}
public class MyBase
{
private IDataField _DataField;
public MyBase()
{
this._DataField = this.CreateDataField();
}
public virtual IDataField CreateDataField()
{
return new DataField(); //Implements IDataField
}
**public virtual IDataField GetDataField()**
{
return this._DataField;
}
public void SomeMethod()
{
this.GetDataField().GetValue();
}
}
public class MyComplexBase : MyBase
{
public override IDataField CreateDataField()
{
return new ComplexDataField(); //Implements IComplexDataField which Implements IDataField
}
**public override IComplexDataField GetDataField()**
{
return (IComplexDataField)base.GetDataField();
}
public void SomeComplexSpecificMethod()
{
this.GetDataField().GetValue();
this.GetDataField().GetDefaultValue();
}
}
Приветствие Энтони
Это, как представляется, является точной копией http://stackoverflow.com/questions/157119/c-can-i-override-with-derived-types – 2008-11-05 22:11:39