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

Jie*_*eng 32 c#

怎么了?

public partial class MainWindow : Window
{
    public ObservableCollection<TabViewModel> Tabs { get; set; }
    public ICollectionView TabsViewSource { get; set; }
    public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }
Run Code Online (Sandbox Code Playgroud)

我明白了

可访问性不一致:属性类型'System.Collections.ObjectModel.ObservableCollection'的可访问性低于属性'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; } }
Run Code Online (Sandbox Code Playgroud)

有用.什么是错publicObservableCollection

Ani*_*Ani 66

TabViewModel公众型了.

显然,对于公共包含类型的公共属性而言,它是不公开的类型是没有意义的.该物业如何出现在外部集会上?

您的第二个示例有效,因为作为一般规则,不提供可访问性修饰符意味着选择最不适用的修饰符作为默认值 - 在这种情况下:private.显然,声明内部(?)类型的私有属性没有一致性问题.