2015-05-18 14 views
9

Es gibt eine Klasse, Kreis genannt. Es enthält die Eigenschaften circleID, circleGeometry und circlePath.statische Methode aufgerufen über abgeleiteten Typ

public class Circle 
{ 
    public string ID {get; set;} 
    public EllipseGeometry circleGeometry {get; set;} 
    public Path circlePath {get; set;} 
} 

Jetzt versuche ich ZIndex Wert für einen Kreis festzulegen. Zum Beispiel wird es 2.

Canvas.SetZIndex(someCircleID.circlePath,2); 

sein, aber ich habe diese Art der Warnung:

„statische Methode über abgeleiteten Typ aufgerufen“

Kann mir jemand erklären, was das tut bedeuten?

+0

Bei einer Schätzung ist 'Canvas' ein Subtyp eines anderen Typs und' SetZIndex' wird von letzterem definiert; nicht von 'Canvas'. –

Antwort

8

SetZIndex ist definiert auf der Panel Klasse, die aus Canvas ableitet. Der Compiler generiert eine Warnung, dass Sie eine statische Methode für einen Untertyp verwenden. Dies ist kein tatsächliches Problem, aber es kann zu Verwirrungen führen, wenn es auf bestimmte Arten verwendet wird. Da SetZIndex nicht zurückgegeben wird, sollte das kein Problem sein.

Aber stellen Sie wie folgt vor:

var ftpRequest = (FtpWebRequest) HttpWebRequest.Create("ftp://my.ftp.com"); 

Create ist eigentlich eine statische Methode WebRequest, sondern auf HttpWebRequest stattdessen verwendet wird, weil es eine abgeleitete-Typ ist und Sie kann tun. Sie erwarten also, dass es sich um eine Webanforderung handelt, die generiert wird, oder? Aber es ist nicht, es generiert FtpWebRequest, weil das in der URI angegeben ist.

Edit:

ich, dass im Allgemeinen darauf hin will, sind die Compiler-Warnungen gibt es für einen Grund, das heißt Weise diese auch vorhanden ist. Solange keine Überlast von SetZIndex in der Klasse Canvas erzeugt wird, ist der Anruf sicher. Aber wie @SriramSakthivel in den Kommentaren darauf hinweist, dass, wenn eine Erweiterungsmethode oder eine statische Methode der Klasse Canvas hinzugefügt wird (unter Verwendung des Modifikators new), von Ihnen oder von jemand anderem, wird das gewünschte Ergebnis und Sie nicht mehr ausgegeben muss mir dessen bewusst sein.

+0

Downvoted für das Vorschlagen von Warnungen sind kein Problem. Guter Rat wäre, Warnungen als Fehler zu betrachten und zu beheben. –

+0

Danke für die Antwort, jetzt ist alles klar;) –

+0

@David Nirgends habe ich versucht zu sagen, dass alle Warnungen kein * Problem * sind. Sie sind da, um anzuzeigen, dass etwas nicht stimmt. In diesem speziellen Fall kann die Warnung sicher ignoriert werden. –

2

Dies bedeutet, dass das Verfahren SetZIndex auf einem Grundtyp der Klasse definiert ist Canvas aber Sie nennen es das letztere verwenden. Du solltest besser mit der Basisklasse auskommen.

Verwandte Themen