可访问性问题不一致

Ber*_*che 3 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;
    }
Run Code Online (Sandbox Code Playgroud)

以下是错误消息:错误1可访问性不一致:参数类型"SqlRepository.DB"比方法"Data.SqlCatalogRepository.SqlCatalogRepository(SqlRepository.DB)"更难访问

SLa*_*aks 12

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

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

你做哪一个将取决于你的类型使用的位置.
如果SqlCatalogRepository仅用于装配体内部,则应该制作它internal.(internal意味着它只对同一个程序集中的其他类型可见)

如果它意味着你的程序集暴露给其他程序集,你应该创建类,public但构造函数internal.

如果DB类本身是由程序集外部的类型使用的,那么您应该自己创建DBpublic.