C# 中的“不一致的可访问性”
本文关键字:访问 中的 不一致 | 更新日期: 2023-09-27 18:30:37
我在 c# 中遇到了一个奇怪的错误。我的代码给出错误"不一致的可访问性:字段类型'Rotanet.RN_BUDGET_SETTINGS'比字段'Rotanet.BudgetSettingsDetailFrm.aBudgetSettings'更难访问"。我知道这是关于公共/受保护/私人的事情,但我不明白我应该怎么做才能解决它。
这是我给出错误的代码
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
}
}
如何解决此问题
您需要
将RN_BUDGET_SETTINGS
类定义为Public
:
public class RN_BUDGET_SETTINGS : RN_AUDIT
{
}
或将预算设置定义为内部/私有:
private RN_BUDGET_SETTINGS aBudgetSettings = null;
您的问题是您已经定义了一个公共字段,因此它在项目外部可见,但是您可以读取/写入该字段的类不是公共的。从外部来说,这意味着你可以设置一个值,但你还没有被告知关于你可以设置的东西的合同/信息。
默认情况下,类是内部的,其中未指定访问修饰符。您需要公开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
}
类RN_BUDGET_SETTINGS
没有标有任何访问修饰符,因此它接收类的默认访问权限,这是内部的。
http://msdn.microsoft.com/en-us/library/ms173121.aspx
"直接在命名空间中声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的,也可以是内部的。如果未指定访问修饰符,则"内部"是默认值。
因为默认情况下类是内部的。
class RN_BUDGET_SETTINGS : RN_AUDIT
自
public class RN_BUDGET_SETTINGS : RN_AUDIT