可访问性不一致:正确类型“数据库”的可访问性低于属性“BaseClass.dtBase”

时间:2017-05-03 07:41:13

标签: c#

有人可以帮助解决以下错误:

  

可访问性不一致:正确类型“数据库”不易访问   比属性'BaseClass.dtBase'

由于错误消息不一致,我无法运行程序。

  

我的错误是受保护数据库上的dtBase {get; set;},总是红线。

这是我的交付课程。

namespace Payroll_System
{
    public class BaseClass
    {
        protected Database dtBase { get; set; }

        public BaseClass()
        {
            dtBase = new Database();
        }

        public string DBText(string Value)
        {
            return string.Format("{0}", Value).Replace("'", "''");
        }
    }

    public class Employee: BaseClass 
    {
        public Employee()
        {

        }

        public string IDNo { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
        public string ContactNo { get; set; }
        public string Designation { get; set; }
        public string Gender { get; set; }
        public string PhilHealthNo { get; set; }
        public string PhilHealth { get; set; }
        public string SSSNo { get; set; }
        public string SSS { get; set; }
        public string eDate { get; set; }

        public void Insert()
        {
            dtBase.CommandText("INSERT into Employee(eIDNo, eName, eAddress, eContactNo, eDesignation, eGender, ePhilHealthNo, ePhilHealth, eSSSNo, eSSS, edate) values(@IDNo, @Name, @Address, @ContactNo, @Designation, @Gender, @PhilHealthNo, @PhilHealth, @SSSNo, @SSS");
            dtBase.AddParameter("@IDNo", this.IDNo);
            dtBase.AddParameter("@Name", this.Name);
            dtBase.AddParameter("@Address", this.Address);
            dtBase.AddParameter("@ContactNo", this.ContactNo);
            dtBase.AddParameter("@Designation", this.ContactNo);
            dtBase.AddParameter("@Gender", this.Gender);
            dtBase.AddParameter("@PhilHealthNo", this.PhilHealthNo);
            dtBase.AddParameter("@PhilHealth", this.PhilHealth);
            dtBase.AddParameter("@SSSNo", this.SSSNo);
            dtBase.AddParameter("@SSS", this.SSS);
            dtBase.AddParameter("@Date", this.eDate.ToString());
            dtBase.Execute();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我的猜测是 strConn = "Provider=sqloledb; User ID=grpleader; Password=r_32_Dosu_sz_qzyp; Initial Catalog=factory; Data Source=202.204.251.30,1433" strConn1 ="Provider=sqloledb; User ID=prjleader; Password=Oi_jcvx_876_pgy_erl; Initial Catalog=factory; Data Source=202.204.251.30,1433" strConn2 ="Provider=sqloledb; User ID=teamhead; Password=eqjJ_Ui9_tjqw_l5; Initial Catalog=factory; Data Source=202.204.251.30,1433" 被声明为内部。 (如果未声明Database,则默认为public

此代码:

internal

表示此库外部的代码可以创建一个继承自public class BaseClass { protected Database DtBase { get; set; } } 的新类,这个新类应该能够通过BaseClass成员访问Database类型的项目。但这是一个错误,因为DtBase不公开,无法在库外访问。

一种选择是将Database声明为Database

public

<小时/> 如果C#能够将可访问性设置为public class Database { } public class BaseClass { protected internal Database DtBase(...) {} } ,那将会很棒。但是,事实证明你不能这样做。 (protected AND internal并不代表您可能自动认为的含义,请参阅this discussion