C#:不一致的可访问性:属性类型

有什么问题

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

我得到

Inconsistent accessibility: property type ‘System.Collections.ObjectModel.ObservableCollection’ is less accessible than property ‘TabsRendering.MainWindow.Tabs’

当我改变代码

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

有用。公共在ObservableCollection上有什么问题

MakeTabViewModela也是public类型。

显然,在公共包含类型上的公共属性不是公共类型是没有意义的。该属性如何呈现给外部程序集?

您的第二个示例的工作原理,因为,作为一般规则,没有提供无障碍修饰符意味着选择最小适用的修饰符作为默认 – 在这种情况下:private。显然,声明内部(?)类型的私有属性没有一致性问题。

http://stackoverflow.com/questions/3992928/c-inconsistent-accessibility-property-type

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C#:不一致的可访问性:属性类型