【问题标题】:Inconsistent accessibility problem [duplicate]不一致的可访问性问题[重复]
【发布时间】:2010-01-26 13:49:40
【问题描述】:

我正在关注 Rob Conery MVC Storefront 教程系列,我从以下构造函数 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)”

【问题讨论】:

    标签: c# datacontext


    【解决方案1】:

    您的DB 类不是公共的,因此您不能创建将其作为参数的public 方法(或构造函数)。 (你的程序集之外的调用者会做什么?)

    您需要创建DBpublic 或创建SqlCatalogRepository 类(或其构造函数)internal

    你做哪一个取决于你的类型在哪里被使用。
    如果SqlCatalogRepository 仅用于您的程序集中,您应该将其设为internal。 (internal 表示它只对同一程序集中的其他类型可见)

    如果它打算由您的程序集公开给其他程序集,您应该创建类 public 而构造函数 internal

    如果DB 类本身打算供程序集外的类型使用,则应将DB 类本身设为public

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        检查 DB 类上的访问器(这里没有显示)它需要是一个 Public 类,以便允许将其传递给重载的构造函数。

        【讨论】:

          猜你喜欢
          • 2013-07-12
          • 2018-03-07
          • 2015-07-01
          • 2021-01-16
          • 1970-01-01
          • 1970-01-01
          • 2014-07-25
          • 2015-08-11
          相关资源
          最近更新 更多