Soll ich ignorieren InterfaceMethodsShouldBeCallableByChildTypes für WPF-Code generiert?

StackOverflow https://stackoverflow.com/questions/351228

  •  20-08-2019
  •  | 
  •  

Frage

Wenn FxCop 1,36 für eine WPF-Anwendung mit einem einzigen Fenster verwenden, das noch geändert werden muss, erhalte ich die InterfaceMethodsShouldBeCallableByChildTypes Fehler mit folgenden Angaben:

    Target       : #System.Windows.Markup.IComponentConnector.Connect(System.Int32,System.Object)  (IntrospectionTargetMember)
    Resolution   : "Make 'MainWindow' sealed (a breaking change if 
                   this class has previously shipped), implement the method 
                   non-explicitly, or implement a new method that exposes 
                   the functionality of 'IComponentConnector.Connect(int,
                    object)' and is visible to derived classes."
    Help         : http://msdn2.microsoft.com/library/ms182153(VS.90).aspx  (String)
    Category     : Microsoft.Design  (String)
    CheckId      : CA1033  (String)
    RuleFile     : Design Rules  (String)
    Info         : "Explicit method implementations are defined with private 
                   accessibility. Classes that derive from classes with 
                   explicit method implementations and choose to re-declare 
                   them on the class will not be able to call into the 
                   base class implementation unless the base class has 
                   provided an alternate method with appropriate accessibility. 
                   When overriding a base class method that has been hidden 
                   by explicit interface implementation, in order to call 
                   into the base class implementation, a derived class 
                   must cast the base pointer to the relevant interface.
                    When calling through this reference, however, the 
                   derived class implementation will actually be invoked,
                    resulting in recursion and an eventual stack overflow."
    Created      : 08/12/2008 22:26:37  (DateTime)
    LastSeen     : 08/12/2008 22:41:05  (DateTime)
    Status       : Active  (MessageStatus)
    Fix Category : NonBreaking  (FixCategories)
}

Sollte dies einfach ignoriert werden?

War es hilfreich?

Lösung

es ignoriert, ist dieses Standard-Code, der in jeder WPF-Anwendung ist und Sie nicht sehen, beklagen die Menschen über Netto-IComponentConnector.Connect in der Lage zu nennen von abgeleiteten Klassen -. So ist es wahrscheinlich sicher

Generell denke ich, sollten Sie FxCop Ausgabe als Vorschläge zu behandeln, die sorgfältig abgewogen werden müssen, ich habe in der Vergangenheit viele schlechte Ratschläge von FxCop bekam.

Andere Tipps

Abhängig von, was Sie erwarten ein inheriter zu tun.

Wenn Sie diese Klasse nicht erwartet vererbt wird, dann sollte es verschlossen werden und das Problem verschwindet.

Wenn Sie es erwarten, dann vererbt werden Sie die Fähigkeit der erbenden Klasse nehmen die Interface-Methoden außer Kraft zu setzen und sie noch nennen (das heißt base.methodname()). Wenn das Ihre Absicht ist, dann können Sie die Warnung ignorieren.

Das ist jedoch nicht die erwartete Verhalten für vererbbare Klassen, so dass Sie die Schnittstelle öffentlich aussetzen sollen (das heißt eine implizite Schnittstelle statt einer expliziten Schnittstelle).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top