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 を internal/private として定義します。

private RN_BUDGET_SETTINGS aBudgetSettings = null;

あなたの問題は、パブリック フィールドを定義してプロジェクトの外部から見えるようにしたことですが、フィールドに読み書きできるクラスはパブリックではありません。外部的には、これは値を設定できることを意味しますが、設定できることに関する契約/情報は知らされていません。

于 2013-09-09T12:07:46.760 に答える
1

クラスRN_BUDGET_SETTINGSはアクセス修飾子でマークされていないため、クラスのデフォルト アクセスである internal を受け取ります。

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

「名前空間内で直接宣言されている (つまり、他のクラスまたは構造体にネストされていない) クラスと構造体は、public または internal のいずれかになります。アクセス修飾子が指定されていない場合、Internal がデフォルトです。」

于 2013-09-09T12:08:53.040 に答える
1

class はデフォルトでInternalであるためです。変化する

class RN_BUDGET_SETTINGS : RN_AUDIT

public class RN_BUDGET_SETTINGS : RN_AUDIT
于 2013-09-09T12:09:24.717 に答える