可访问性问题不一致

时间:2012-11-02 07:24:20

标签: c#

我收到以下错误:

Inconsistent accessibility: parameter type 'RR.DAL.LINQSqlCLient.StaticReport' is less accessible than method 'RR.BLL.AuditTrail.InsertStaticReportAudit(RR.DAL.LINQSqlCLient.StaticReport, string)'    
D:\My Projects\ASP Projects\Development\RapidReportTool\Working Directory\App_Code\BLL\AuditTrail.cs

这是我的代码:

public static void InsertStaticReportAudit(StaticReport staticReport, string filterString)
{
    if (System.Web.HttpContext.Current.Session["AuditTrail"] != null)
    {
        AuditTrail CurrAuditTrail = (AuditTrail)System.Web.HttpContext.Current.Session["AuditTrail"];

        AuditTrailReports auditTrailReport = new AuditTrailReports();
        auditTrailReport.ID = AuditTrailReports.Insert(CurrAuditTrail.ID, staticReport.ID, filterString, DateTime.Now, true);

        System.Web.HttpContext.Current.Session["AuditTrailReport"] = auditTrailReport;
    }
}

参数StaticReport类:

partial class StaticReport
{
    public bool BelongsToReportCategory(int reportCategoryID)
    {
        //If there is an entry StaticReport_ReportCategories junction table,
        //then this static report belongs to the report category

        RapidReportDataContext db = new RapidReportDataContext();
        var query = from sr_sc in db.StaticReport_ReportCategories
                               where sr_sc.StaticReportID == this.ID && sr_sc.ReportCategoryID == reportCategoryID
                               select sr_sc;

        if (query.Count() > 0)
            return true;
        else
            return false;
    }
}

不确定我为什么会收到此错误。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:2)

它非常直观:类型StaticReport不公开。

由于它是一个局部类,你可能需要查看两个声明,'main'声明应该使用public修饰符。

默认访问级别为internal,您不能在公共方法的签名中使用内部类型。打电话是不可能的。

答案 1 :(得分:1)

您的公共方法InsertStaticReportAudit的参数类型为StaticReport。此类不是公开。程序集外部的调用者将无法调用该方法,这就是编译器不接受它的原因。

您必须将StaticReport公开或InsertStaticReportAudit非公开。