0

我在 C# 中有一个奇怪的错误。我的代码给出了错误“不一致的可访问性:字段类型'Rotanet.RN_BUDGET_SETTINGS'比字段'Rotanet.BudgetSettingsDetailFrm.aBudgetSettings'更难访问”。我知道这是关于 PUBLIC/PROTECTED/PRIVATE 的事情,但我不明白我应该怎么做才能解决它。

这是我给出错误的代码

namespace Rotanet
{
  public partial class BudgetSettingsDetailFrm : DevExpress.XtraEditors.XtraForm
  {
    public RN_BUDGET_SETTINGS aBudgetSettings = null; //***** this gives the error

    public BudgetSettingsDetailFrm()
    {
        InitializeComponent();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {

    }
  }
}

RN_BUDGET_SETTINGS 是一个简单的类,如下所示......

namespace Rotanet
{
  class RN_BUDGET_SETTINGS : RN_AUDIT
  {

    public RN_BUDGET_SETTINGS()
    {
    }
    #region Properties
    [IsKey(true)]
    public dynamic ID { get; set; }
    public dynamic TANIM { get; set; }
    public dynamic DEGER { get; set; }
    #endregion

  }
}

我该如何解决这个问题

4

4 回答 4

5

您需要将RN_BUDGET_SETTINGS类定义为Public

public class RN_BUDGET_SETTINGS : RN_AUDIT
{

}

或将 aBudgetSettings 定义为内部/私有:

private RN_BUDGET_SETTINGS aBudgetSettings = null;

您的问题是您已经定义了一个公共字段,因此它在您的项目之外是可见的,但是您可以读取/写入该字段的类不是公共的。在外部,这意味着您可以设置一个值,但您没有被告知有关您可以设置的东西的合同/信息。

于 2013-09-09T12:07:46.760 回答
1

默认情况下,类是内部的,没有指定访问修饰符。您需要RN_BUDGET_SETTINGS 公开

public class RN_BUDGET_SETTINGS : RN_AUDIT
{
   public RN_BUDGET_SETTINGS()
   {
   }
   #region Properties
   [IsKey(true)]
   public dynamic ID { get; set; }
   public dynamic TANIM { get; set; }
   public dynamic DEGER { get; set; }
   #endregion
}
于 2013-09-09T12:08:41.863 回答
1

RN_BUDGET_SETTINGS没有用任何访问修饰符标记,因此它接收类的默认访问,这是内部的。

http://msdn.microsoft.com/en-us/library/ms173121.aspx

“直接在命名空间中声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。如果未指定访问修饰符,则默认为内部。”

于 2013-09-09T12:08:53.040 回答
1

因为类默认是内部的。改变

class RN_BUDGET_SETTINGS : RN_AUDIT

public class RN_BUDGET_SETTINGS : RN_AUDIT
于 2013-09-09T12:09:24.717 回答