Самое близкое, что вы можете получить в C # 3.0, - это иметь отдельный метод virtual
(например, ваш метод CreateDataField
), который выполняет реальную работу и может быть переопределен, затем используйте new
, чтобы повторно объявить открытый метод. , т.е. в базе:
public IDataField GetDataField()
{
return GetDataFieldImpl();
}
protected virtual IDataField GetDataFieldImpl()
{
// return a basic version
}
и в подклассе:
protected override IDataField GetDataFieldImpl()
{
// do something more fun
}
public new IComplexDataField GetDataField()
{
return (IComplexDataField)GetDataFieldImpl();
}