2011-01-03 4 views
0

je tente de mettre en œuvre la classe abstraite DbCommand (comme OdbcCommand, OleDbCommand, ...), mais une chose que je ne comprends pas pourquoi quand j'écris:mise en œuvre DbCommand ne met pas en œuvre toute classe abstraite

internal sealed class SybaseCommand : DbCommand, IDisposable 

et je demande à VS2008 d'implémenter toute la classe abstraite, il ne génère pas automatiquement tous les stubs de remplacement pour chaque méthode/propriété.

Voici la classe MSDN DbCommand: http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.aspx

Il ne me génère pas le bout de la propriété pour "Connexion", "CanRaiseEvents"/... et non le talon pour ExecuteReader().

Pouvez-vous me dire pourquoi? J'ai raté quelque chose?

Merci pour l'aide :)

[EDIT]

Dans le cas de la méthode ExecuteReader(), il existe 3 méthodes

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

Puis-je supposer que les deux méthodes publiques ne demandent celui protégé?

+3

Je pense qu'il ajoute seulement des bouts pour des méthodes et des propriétés abstraites. – asawyer

+2

Essayez d'utiliser ReSharper, ils vous offrent généralement beaucoup plus d'options sur ce genre de choses. http://www.jetbrains.com/resharper/ –

+0

S'il vous plaît voir mon edit :) –

Répondre

0

Comme asawyer dit, il n'a de sens que pour remplacer les méthodes et les propriétés que vous avez réellement pouvez override, à savoir virtual et abstract membres. Pour "remplacer" les membres non virtuels ou non abstraits, vous devez utiliser le new modifier. Par exemple.

public new DbDataReader ExecuteReader() 

Cela présente les inconvénients habituels, tel que décrit dans le MSDN reference article.

+1

S'il vous plaît voir mon edit :) –