2010-01-26 61 views
3

我下面罗布科纳MVC店面教程系列,我从下面的构造公共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)”不太容易接近

回答

12

DB类是不公开的,所以你不能让一个public方法(或构造函数)这需要一个是一个参数。 (你会有什么装配外部来电吗?)

你需要要么使DBpublic或使SqlCatalogRepository类(或它的构造函数)internal

你要做哪一个将取决于你的类型在哪里使用。
如果SqlCatalogRepository仅用于组装中,则应使其成为internal。 (internal意味着它只是其他类型的同一程序可见)

如果它的意思是你的组件其它组件被曝光,你应该做的类public但构造internal

如果DB类本身旨在用于组件外的类型,则应使DB类本身为public

4

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

2

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