我正在关注Rob Conery MVC店面教程系列,并且我从以下构造函数public SqlCatalogRepository(DB dataContext)获得了一个不一致的可访问性错误:
public class SqlCatalogRepository : ICatalogRepository
{
DB db;
public SqlCatalogRepository()
{
db = new DB();
//turn off change tracking
db.ObjectTrackingEnabled = false;
}
public SqlCatalogRepository(DB dataContext)
{
//override the current context
//with the one passed in
db = dataContext;
}
以下是错误消息: 错误1可访问性不一致:参数类型“SqlRepository.DB”比方法“Data.SqlCatalogRepository.SqlCatalogRepository(SqlRepository.DB)”
更难访问答案 0 :(得分:12)
您的DB
类不公开,因此您无法创建将其作为参数的public
方法(或构造函数)。 (大会外的来电者会做什么?)
您需要制作DB
类public
或制作SqlCatalogRepository
类(或其构造函数)internal
。
您执行的操作取决于您的类型使用位置
如果SqlCatalogRepository
仅用于装配体内,则应将其设为internal
。 (internal
表示它只对同一程序集中的其他类型可见)
如果要将程序集暴露给其他程序集,则应该创建类public
但是构造函数internal
。
如果DB
类本身要由程序集外部的类型使用,则应自行设置DB
类public
。
答案 1 :(得分:4)
类型DB
用于公共类型的公共构造函数。因此,DB
类型本身必须是公开的。
答案 2 :(得分:2)
检查数据库类的访问器(你不在这里显示)它需要是一个在oreder中的Public类,以允许它传递给重载的构造函数。