2015-05-18 13 views
9

Có một lớp, được gọi là vòng tròn. Nó chứa circleID, circleGeometry và circlePath propertities.phương thức tĩnh được gọi thông qua kiểu dẫn xuất

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

Bây giờ, tôi đang cố đặt giá trị ZIndex cho một vòng kết nối. Ví dụ nó sẽ là 2.

Canvas.SetZIndex(someCircleID.circlePath,2); 

Nhưng tôi có loại đó của cảnh báo:

"phương pháp tĩnh gọi thông qua loại hình xuất phát"

Ai đó có thể giải thích cho tôi những gì hiện có nghĩa là?

+0

Khi đoán, 'Canvas' là loại phụ của loại khác và' SetZIndex' được xác định bởi loại sau; không phải bởi 'Canvas'. –

Trả lời

8

SetZIndex được xác định trên lớp Panel, trong đó Canvas xuất phát từ đó. Trình biên dịch tạo ra một cảnh báo nói rằng bạn đang sử dụng một phương thức tĩnh trên một kiểu con. Đây không phải là sự cố thực tế nhưng có thể dẫn đến nhầm lẫn khi được sử dụng theo những cách nhất định. Vì SetZIndex sẽ không hoạt động trở lại, đó không phải là vấn đề.

Nhưng hãy tưởng tượng như sau:

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

Create thực sự là một phương pháp tĩnh của WebRequest, nhưng được sử dụng trên HttpWebRequest thay vào đó, bởi vì nó là một nguồn gốc loại và bạn có thể làm như vậy. Vì vậy, bạn mong muốn nó là một yêu cầu web đang được tạo ra, phải không? Nhưng nó không phải là, nó tạo ra một FtpWebRequest, bởi vì nó được chỉ định trong URI.

Edit:

tôi muốn chỉ ra rằng nói chung, những lời cảnh báo trình biên dịch là có một lý do, đó là cách này tồn tại là tốt. Miễn là không có quá tải SetZIndex được tạo trong lớp Canvas, cuộc gọi này an toàn. Nhưng khi @SriramSakthivel chỉ ra trong các nhận xét, nếu bất kỳ phương pháp mở rộng hoặc phương pháp tĩnh nào được thêm vào lớp Canvas (sử dụng công cụ sửa đổi new) trên đường đi, bởi bạn hoặc bất kỳ ai khác, nó sẽ không còn xuất kết quả mong muốn nữa phải nhận thức được điều đó.

+0

Đã bỏ phiếu để đề xuất cảnh báo không phải là vấn đề. Lời khuyên tốt là để coi cảnh báo là lỗi và khắc phục chúng. –

+0

Cảm ơn câu trả lời, bây giờ tất cả đã rõ ràng;) –

+0

@David Không nơi nào tôi cố gắng nói rằng tất cả các cảnh báo không phải là một vấn đề *. Họ đang ở đó để chỉ ra điều gì đó có thể sai. Trong trường hợp cụ thể này, cảnh báo có thể được bỏ qua một cách an toàn. –

2

Điều này có nghĩa là phương pháp SetZIndex được xác định trên loại cơ sở của lớp Canvas nhưng bạn gọi nó bằng cách sử dụng sau. Bạn nên tắt bằng cách sử dụng lớp cơ sở.

Các vấn đề liên quan