2010-10-21 35 views
31

Có gì sai vớiC#: khả năng tiếp cận nhất quán: Loại tài sản

public partial class MainWindow : Window 
{ 
    public ObservableCollection<TabViewModel> Tabs { get; set; } 
    public ICollectionView TabsViewSource { get; set; } 
    public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } } 

tôi nhận được

khả năng tiếp cận nhất quán: Loại bất động sản 'System.Collections.ObjectModel.ObservableCollection' là khó tiếp cận hơn tài sản 'TabsRendering. MainWindow.Tabs '

khi tôi thay đổi mã thành

public partial class MainWindow : Window 
{ 
    ObservableCollection<TabViewModel> Tabs { get; set; } 
    public ICollectionView TabsViewSource { get; set; } 
    public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } } 

Nó hoạt động. Có sự cố với số public trên ObservableCollection

Trả lời

62

Làm cho một loại công khai quá.

Rõ ràng, không có ý nghĩa đối với thuộc tính công khai công khai trên công khai loại có chứa thuộc loại không công khai. Làm thế nào có thể tài sản hiện tại chính nó để hội đồng bên ngoài?

Mẫu thứ hai của bạn hoạt động vì, như quy tắc chung, không cung cấp công cụ sửa đổi trợ năng có nghĩa là sửa đổi ít nhất áp dụng được chọn làm mặc định - trong trường hợp này là riêng tư. Rõ ràng, không có vấn đề nhất quán nào khi khai báo thuộc tính riêng của một kiểu nội bộ (?).

+1

Giải thích tuyệt vời –

+0

oh ... Tôi đã kiểm tra 'MainWindow' là công khai ... lol –

+0

nó đã giúp tôi.thanks Ani –

3

Khả năng truy cập trên TabViewModel là gì? Tôi đoán nó không công khai.

+0

câu trả lời này xứng đáng được chú ý nhiều hơn những người khác, llol. ngắn nhưng thẳng đến điểm. –

1

Tất cả thông tin ở trên hoàn toàn chính xác và hoạt động tốt. Tôi chỉ muốn thêm từ kinh nghiệm cá nhân rằng nếu bạn đang sử dụng TFS và nhận dự án của bạn từ TFS, các phiên bản Visual Studio khác nhau cũng có thể tạo ra lỗi này.

Tôi đã nhập dự án có bản cập nhật Visual Studio 2013 2 và được đồng bộ hóa với TFS để nhận giải pháp. Khi tôi cố gắng chạy dự án, tôi nhận được 80 lỗi. Tất cả chúng đều giống như "... ít tiếp cận hơn tài sản ...". Bây giờ nó quay ra tôi cần cập nhật 4. Một khi Visual Studio của tôi đã được cập nhật tôi tôn kính những thay đổi và nó hoạt động hoàn hảo.

Điều này có thể hữu ích nếu không có công trình nào ở trên hoạt động và bạn đang sử dụng TFS.

2

Thư rất thẳng về phía trước. Nó mâu thuẫn với những gì bạn muốn làm. Nó nói rằng bạn có một cái gì đó tuyên bố là công khai (Tabs, trong trường hợp này) nhưng người sẽ sử dụng nó cũng cần phải biết về TabViewModel mà không phải là công khai. Hoặc là làm cho cả hai công khai hoặc một số specifier truy cập nhất quán.

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