2011-02-28 87 views
3

我试图从类返回的对象列表,并获得以下错误:C# - 无法返回列表

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; } 
    } 
} 

什么问题是什么?和我如何检索列表?

+2

什么是类'Attribute'?我强烈怀疑这不是System.Attribute类 – SWeko 2011-02-28 13:30:56

+0

它是自定义类 – kaycee 2011-02-28 13:32:37

+0

那么就有问题了。使该属性类至少为'内部',代码将编译得很好 – yas4891 2011-02-28 13:35:30

回答

7

使类Attribute公开或内部。

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

或者将AttributeList限制为Attribute类,如果这是您想要的方式。

+0

除非嵌套,否则类只能是公共或内部的。 – SWeko 2011-02-28 13:40:29

0

我认为问题在于您已声明财产为private。尝试使它成为protectedpublic

+0

受保护和公开声明的同一错误 – kaycee 2011-02-28 13:33:20

+1

该属性未声明为“private”,而是“internal”。问题不在于该属性太受限制,而是它返回的类型太受限制。 – Guffa 2011-02-28 13:33:34

-1

您是否包含以下内容?

using System; using System.Collections.Generic;

类编译在我的箱子细... :)

+0

这是一个运行时错误:) – JAiro 2011-02-28 13:31:39

2

属性类缺乏必要的可视性。

改变类定义要么

public class Attribute 
{ 

internal class Attribute 
{ 
+0

除非嵌套,否则这两个是类元素上唯一允许的访问修饰符,无论如何... – SWeko 2011-02-28 13:39:26

+0

让你想知道他是如何在第一个地方结束的。对于默认修饰符是_internal_ – yas4891 2011-02-28 13:43:19