2009-07-21 49 views
9

Tôi không phải là người mới đối với C#, nhưng tôi đã tìm thấy một hành vi có chút khó hiểu.Giao diện triển khai C#

Tôi có một giao diện

public interface IApplicationPage 
{ 
    Person ThePerson { get; set; } 
    Application Application { get; set; } 
} 

tôi thực hiện giao diện trên một trang

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage 
{ 
    Person IApplicationPage.ThePerson { get; set; } 
    Application IApplicationPage.IApplicationPage.Application { get; set; } 
} 

Tuy nhiên, khi tôi cố gắng để tham khảo ThePerson trong trang bản thân tôi cần phải nhảy qua hoops. Ví dụ.

1) ThePerson.Birthday

Cung cấp cho một lỗi nói rằng "Cái tên 'ThePerson' không tồn tại trong bối cảnh hiện nay."

2) ((IMissionTripApplicationPage) này) .ThePerson.Birthday

này hoạt động, nhưng có vẻ khủng khiếp.

Có cách nào tốt hơn để tham khảo các thuộc tính được triển khai không?

+0

Bạn có thể hiển thị các mã cụ thể mà không hoạt động? –

Trả lời

23

Có vẻ như bạn đã để lại một dòng trong mẫu của mình. Tôi tin rằng dòng ThePerson trong quá trình triển khai nên đọc

Person IApplicationPage.ThePerson { get; set; } 

Loại triển khai này được gọi là triển khai giao diện rõ ràng. Điều này có nghĩa là thành viên sẽ chỉ có thể xem được khi đối tượng được nhìn thấy thông qua một tham chiếu của kiểu giao diện.

Nếu bạn muốn các thành viên để có thể xem qua một loại tài liệu tham khảo cụ thể, làm cho nó công cộng và loại bỏ việc thực hiện rõ ràng

public Person ThePerson { get; set; } 
+2

+1 lời giải thích tốt –

+1

Rõ ràng đúng, tôi đã bỏ ra khỏi dòng! (sao chép bất cẩn). Cảm ơn Jared. – Daniel

2

Thực hiện họ như tài sản công cộng:

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage 
{ 
    public Person ThePerson { get; set; } 
    public Application IApplicationPage.Application { get; set; } 
} 

Sửa

Câu hỏi giờ đây chỉnh sửa để hiển thị những được thực hiện ban đầu là rõ ràng. Vì vậy, tôi nên restate tôi như thực hiện chúng như là công khai hơn là thực hiện rõ ràng của các tài sản.

+0

Bạn không thể thực hiện công khai rõ ràng công khai (Ứng dụng IApplicationPage.Application là rõ ràng!) – mmmmmmmm

+0

Nó không rõ ràng khi tôi trả lời. Khá đúng mặc dù tất nhiên. –

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