有什么问题
public partial class MainWindow : Window
{
public ObservableCollection<TabViewModel> Tabs { get; set; }
public ICollectionView TabsViewSource { get; set; }
public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }
我得到了
可访问性不一致:属性类型'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; } }
有效。 public
ObservableCollection
的错误
答案 0 :(得分:64)
将TabViewModel
设为公共类型。
显然, public 包含类型的 public 属性不属于非公开类型是没有意义的。该物业如何将自己呈现给外部集会?
您的第二个示例有效,因为作为一般规则,不提供辅助功能修饰符意味着选择最少适用的修饰符作为默认值 - 在这种情况下:private。显然,声明内部(?)类型的私有属性没有一致性问题。
答案 1 :(得分:3)
TabViewModel
的可访问性是什么?我猜它不公开。
答案 2 :(得分:2)
这条信息非常简单。这与你想做的事情相矛盾。它说你有一些声明为公共的东西(在这种情况下是Tabs),但是使用它的人也需要知道不公开的TabViewModel。要么是公共访问说明符,要么是一致的访问说明符。
答案 3 :(得分:1)
以上所有信息都是完全正确的,并且运行正常。我只想从个人经验中补充说,如果您使用TFS并从TFS获取项目,则不同的Visual Studio版本也会生成此错误。
我使用Visual Studio 2013更新2进入了一个项目,并与TFS同步以获得解决方案。当我试图运行该项目时,我得到了80个错误。所有这些都像是...... ......比财产更难获得......&#34;。现在我发现我需要更新4.一旦我的Visual Studio更新了,我就尊重这些变化并且它完美地工作了。
如果以上都不起作用并且您正在使用TFS,那么这可能很有用。
答案 4 :(得分:0)
class Tbl_Selected:BaseEntity
{
public int StudentId { get; set; }
public int CourseId { get; set; }
[ForeignKey(nameof(StudentId))]
public Tbl_Student Tbl_Student { get; set; }
[ForeignKey(nameof(VahedId))]
public Tbl_Course Tbl_Course { get; set; }
}
此代码为
public class Tbl_Selected:BaseEntity
{
public int StudentId { get; set; }
public int CourseId { get; set; }
[ForeignKey(nameof(StudentId))]
public Tbl_Student Tbl_Student { get; set; }
[ForeignKey(nameof(VahedId))]
public Tbl_Course Tbl_Course { get; set; }
}
您最多将public
添加到班级