Реализация DbCommand не реализует весь абстрактный класс - PullRequest
0 голосов
/ 03 января 2011

Я пытаюсь реализовать абстрактный класс DbCommand (например, OdbcCommand, OleDbCommand, ...), но я не понимаю, почему, когда я пишу:

internal sealed class SybaseCommand : DbCommand, IDisposable

и я прошу VS2008 реализовать весь абстрактный класс, он не генерирует автоматически всю заглушку переопределения для каждого метода / свойства.

Вот класс MSDN DbCommand: http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.aspx

Он не генерирует заглушку для свойства "Connection", "CanRaiseEvents" / ..., а не заглушку для ExecuteReader ().

Можете ли вы сказать мне, почему? Я что-то пропустил?

Спасибо за помощь:)

[EDIT]

В случае метода ExecuteReader () есть 3 метода

public DbDataReader ExecuteReader()
public DbDataReader ExecuteReader(CommandBehavior behavior)
protected abstract DbDataReader ExecuteDbDataReader(CommandBehavior behavior)

Можно ли предположить, что оба открытых метода вызывают только защищенный?

1 Ответ

0 голосов
/ 03 января 2011

Как сказал asawyer , имеет смысл переопределять методы и свойства, которые вы на самом деле можете переопределить, то есть virtual и abstract члены.

Чтобы «переопределить» не виртуальные или неабстрактные члены, вы должны использовать модификатор new .Например,

public new DbDataReader ExecuteReader()

Это имеет обычные недостатки, как описано в справочной статье MSDN .

...