【问题标题】:C# - unable to return ListC# - 无法返回列表
【发布时间】:2011-07-05 18:43:38
【问题描述】:

我试图从一个类中返回对象列表并得到以下错误:

Error 1 Inconsistent accessibility: property type 'System.Collections.Generic.List<EventXmlExtract.Attribute>' is less accessible than property 'EventXmlExtract.EventExtract.AttributeList' C:\Documents and Settings\eyalk\My Documents\Visual Studio 2010\Projects\Blobs\EventExtractDll\EventExtract.cs 14 32 EventExtractDll

我的代码尝试返回 _attributeList:

public class EventExtract
{
    private string _type;
    private int _type_id;
    private List<Attribute> _attributeList = new List<Attribute>();

    internal List<Attribute> AttributeList
    {
        get { return _attributeList; }
        set { _attributeList = value; }
    }
}

有什么问题?以及如何检索列表?

【问题讨论】:

  • Attribute 是什么类?我强烈怀疑它不是 System.Attribute 类
  • 那么问题就来了。使该属性类至少为“内部”,代码将编译得很好
  • 能否请您显示它的定义,因为这是问题的根本原因。
  • 我刚刚在下面更新了我的答案。试一试并报告。

标签: c# class list public


【解决方案1】:

Attribute 类设为公开或内部。

您不能返回类为私有的对象列表,因为调用代码无法访问这些对象。

或者,如果您希望这样做,也可以将 AttributeList 设置为与 Attribute 类一样受限制。

【讨论】:

  • 除非嵌套,类只能是公共的或内部的。
【解决方案2】:

您的 Attribute 类缺乏所需的可见性。

将类定义更改为任一

public class Attribute
{

internal class Attribute 
{

【讨论】:

  • 除非嵌套,否则这两个是类元素上唯一允许的访问修饰符...
  • 让你想知道他最初是如何落到那个位置的。对于默认修饰符是 internal
【解决方案3】:

我认为问题在于您已将该属性声明为private。尝试将其设为protectedpublic

【讨论】:

  • 该属性未声明为private,它是internal。问题不在于属性太受限制,而在于它返回的类型太受限制。
【解决方案4】:

您是否包含以下内容?

使用系统; 使用 System.Collections.Generic;

这个类在我的盒子上编译得很好...... :)

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多