【问题标题】:Inconsistent accessibility: property type __ is less accessible than property ___可访问性不一致:属性类型 __ 比属性 ___ 更难访问
【发布时间】:2015-01-04 18:17:55
【问题描述】:

我正在创建一个数据库,我需要为数据库中与名称匹配的所有条目建立索引。

这是使用它的地方:

dDatabase.FindAll(findArea.Match);

这是 findArea 类:

public class FindArea
{
    string m_Name;
    public FindArea(string name)
    {
        m_Name = name;
    }

    public Predicate<databaseEntry> Match
    {
        get { return NameMatch; }
    }

    private bool NameMatch(databaseEntry deTemp)
    {
        if(deTemp.itemName == m_Name)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

这是 databaseEntry 类的精简功能:

class databaseEntry
{
    public databaseEntry(int id, int area, string name)
    {
        rfid = id;
        currentArea = area;
        itemName = name;
    }
}

我的问题是,当我尝试编译时,我得到了

“错误 CS0053:可访问性不一致:属性类型 'System.Predicate' 比 属性 Database.FindArea.Match"

Predicate&lt;databaseEntry&gt; Match 函数中。

更新

所以感谢大家的帮助,我需要将 databaseEntry 类的访问权限设置为 public,

public class databaseEntry

或者我可以更改:

public class FindArea

到:

class FindArea

并且不理会 databaseEntry

这是由于混合了两个类的不同可访问性

【问题讨论】:

  • 什么不清楚?您的谓词是 public 但返回 databaseEntry 这是内部的。
  • 其实是在抱怨类型参数databaseEntry
  • @JeroenVannevel:非嵌套的受保护内部类?
  • 问题是class databaseEntry不是公开的,这意味着如果你想暴露public Predicate&lt;databaseEntry&gt; Match那么导出需要知道databaseEntry

标签: c#


【解决方案1】:

您的问题是您的 databaseEntry 类不是公开的,因此要使基于 databaseEntry 类的谓词公开,您还需要公开 databaseEntry 类。

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多