我为我的应用程序数据做包装。但是首先,我的代码:
public class FakeData
{
private List<User> users { get; set; }
private List<Project> projects { get; set; }
public FakeData()
{
users = new List<User>
{
//Some Data here
};
projects = new List<Project>
{
//Some data here
};
}
public void Initialize() => context = new FakeData();
public List<User> GetUsers() => context.users; //i get an error here
private FakeData context { get; set; }
}
我想做的是包装FakeData()
类。我想在此类中有私有列表和对象状态。为什么VS告诉我,类型List<User>
比方法GetUsers()
少可用?当我想仅通过访问公共方法访问对象并列出列表时,如何使其正确?
谢谢您的建议
编辑
感谢您的回答,真的很有帮助!
我想通过包装FakeData()
类来获得的结果是不公开来自Users
和Projects
的公共财产。我只想通过将在FakeData
类中编写的公共方法来访问它
答案 0 :(得分:1)
即使在其他相同类型的实例中,也无法访问context
的当前实例users
属性。
如您所定义的users
私有,则只能在context
内部访问,而不能在其外部访问。
当您尝试访问users
属性时。
私人访问权限是最低的访问权限级别。私有成员只能在类的主体或声明其的结构中访问
查看这些here
的更多示例如果您不希望在课程之外修改set
,则可以将public List<User> users { get; private set; }
更改为private:
users
现在,您的代码可以正常工作了,您可以阅读glBlendFunci
属性。
答案 1 :(得分:1)
好像类User
是不公开的,您需要更改它。原因:public
的方法只能返回也是public
的东西。
答案 2 :(得分:1)
为什么VS告诉我,类型List比方法GetUsers()少?
您需要修改User
类以确保它是公共的,因此它至少与引用它的FakeData
类一样可用。
public class User
{
}
当我想仅通过访问公共方法来访问对象和列表时,如何使其正确?
将您的媒体资源公开。
public class FakeData
{
public List<User> Users { get; private set; }
public List<Project> Projects { get; private set; }
public FakeData()
{
Users = new List<User>
{
//Some Data here
};
Projects = new List<Project>
{
//Some data here
};
}
}