2011-01-03 12 views
0

Ich versuche, die abstrakte DbCommand Klasse zu implementieren (wie OdbcCommand, OleDbCommand, ...), aber eine Sache, die ich nicht verstehe, ist, warum, wenn ich schreibe:Implementierung DbCommand implementieren nicht alle abstrakte Klasse

internal sealed class SybaseCommand : DbCommand, IDisposable 

und ich fordere VS2008, alle abstrakte Klasse zu implementieren, es generiert nicht automatisch alle override Stub für jede Methode/Eigenschaft. Hier

ist die MSDN DbCommand Klasse: http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.aspx

Es generiert mich nicht den Stummel für die Eigenschaft für "Connection", "CanRaiseEvents"/... und nicht der Stub für ExecuteReader().

Können Sie mir sagen, warum? Ich habe etwas verpasst?

Vielen Dank für Hilfe :)

[EDIT]

Bei der ExecuteReader() -Methode gibt es 3 Methoden

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

Kann ich, dass beide öffentliche Methoden annehmen, nur anrufen der geschützte?

+3

Ich glaube, es fügt nur Stubs für abstrakte Methoden und Eigenschaften. – asawyer

+2

Versuchen Sie mit ReSharper, sie bieten Ihnen normalerweise viel mehr Optionen für diese Art von Dingen. http://www.jetbrains.com/resharper/ –

+0

Bitte sehen Sie meine Bearbeitung :) –

Antwort

0

Wie asawyer sagte, ist es nur sinnvoll ist, Methoden und Eigenschaften außer Kraft zu setzen, die Sie tatsächlich kann überschreiben, das heißt virtual und abstract Mitglieder.

Um nicht-virtuelle oder nicht-abstrakte Mitglieder "außer Kraft zu setzen", müssen Sie new modifier verwenden. Z.B.

public new DbDataReader ExecuteReader() 

Dies hat die üblichen Nachteile auf, wie sie in der MSDN reference article beschrieben.

+1

Bitte sehen Sie meine Bearbeitung :) –