可访问性问题不一致

时间:2010-01-26 13:49:41

标签: c# datacontext

我正在关注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)”

更难访问

3 个答案:

答案 0 :(得分:12)

您的DB类不公开,因此您无法创建将其作为参数的public方法(或构造函数)。 (大会外的来电者会做什么?)

您需要制作DBpublic或制作SqlCatalogRepository类(或其构造函数)internal

您执行的操作取决于您的类型使用位置 如果SqlCatalogRepository仅用于装配体内,则应将其设为internal。 (internal表示它只对同一程序集中的其他类型可见)

如果要将程序集暴露给其他程序集,则应该创建类public但是构造函数internal

如果DB类本身要由程序集外部的类型使用,则应自行设置DBpublic

答案 1 :(得分:4)

类型DB用于公共类型的公共构造函数。因此,DB类型本身必须是公开的。

答案 2 :(得分:2)

检查数据库类的访问器(你不在这里显示)它需要是一个在oreder中的Public类,以允许它传递给重载的构造函数。