C# a<;列表>;
我有以下错误 CS0053不一致的可访问性:属性类型“C# a<;列表>;,c#,list,C#,List,我有以下错误 CS0053不一致的可访问性:属性类型“List”的可访问性低于属性“DataStorage.deKoers” 这个问题与其他职位类似;但我无法找到合适的解决方案: 类DataStorage具有公共访问修饰符 排除deLijst或deKoers上的公共修饰符会使它在这个类之外不可访问(我想访问它们) 从DataStorage类中删除public修饰符可以解决错误消息,但会使属性无法从任何其他位置访问 我怀疑这份名单起到了意想不到的作用;因为它与“MyText”属性一起工作 Da
List
”的可访问性低于属性“DataStorage.deKoers
”
这个问题与其他职位类似;但我无法找到合适的解决方案:
- 类DataStorage具有公共访问修饰符
- 排除deLijst或deKoers上的公共修饰符会使它在这个类之外不可访问(我想访问它们)
- 从DataStorage类中删除public修饰符可以解决错误消息,但会使属性无法从任何其他位置访问
DataStorage instStorage = new DataStorage();
private void LadenInventarisVanDisk()
{
var x = instStorage.MyText;
Console.WriteLine(x.ToString() );
}
namespace Storage
{
public class DataStorage
{
/* this works fine*/
private string _myText = "text to save" ;
public string MyText
{
get { return _myText; }
set { _myText = value; }
}
private List<Inventaris> _deLijst;
/* adding public generate the accessible error*/
public List<Inventaris> DeLijst
{
get { return _deLijst; }
set { _deLijst = value; }
}
private List<Koers> _deKoers;
/* excluding the public means i cannot call this property from another location */
List<Koers> deKoers
{
get { return _deKoers; }
set { _deKoers = value; }
}
}
}
DataStorage instStorage=newdatastorage();
私有void ladeningentarisvandisk()
{
var x=instStorage.MyText;
Console.WriteLine(x.ToString());
}
名称空间存储
{
公共类数据存储
{
/*这很好用*/
私有字符串\u myText=“要保存的文本”;
公共字符串MyText
{
获取{return\u myText;}
设置{u myText=value;}
}
私人名单;
/*添加public将生成可访问错误*/
公开名单
{
获取{return\u deLijst;}
设置{u deLijst=value;}
}
私人名单;
/*排除公众意味着我不能从其他位置调用此属性*/
德克奥尔名单
{
获取{return\u deKoers;}
集合{u deKoers=value;}
}
}
}
列表的可访问性取决于给定T
的可访问性,因此,您的类Koers
和Inventaris
必须可以公开访问列表答案可能是类Inventaris
和/或Koers
比公共更难访问(类的默认可访问性是internal
(如果未嵌套)和private
(如果嵌套)。两者都比public更具限制性,并且会引发错误)。解决此问题的一个好方法是始终显式地为所有内容编写访问级别-它使此类错误更容易查看这似乎很奇怪-这是列表
中的常规类还是您的代码中的自定义类?通常,如果List
是私有或内部的自定义属性,则我希望看到此错误,这意味着您的公共属性可以从程序集外部看到,但List
类无法看到。正常的错误:使用System.Collections.Generic;没有特殊的技巧。什么是科尔斯和发明家?我假设他们是班级。如果是这样的话,那么将它们设为公共类,然后将属性设为public deKoersAh,我被您的错误消息弄糊涂了,您的错误消息已经被破坏,删除了泛型参数,并且完全忘记了错误消息是如何工作的!我想,因为错误消息刚刚提到了List
,所以它一定与此相关。请小心使用代码标记(在文本周围加上一个反勾号),以免泛型参数被解释为HTML!我肯定在名单上。问题确实是底层的类Koers和Inventaris不是公共的。你的第一句话不太正确。它们必须是公共的,才能由公共财产归还。你可以有一个不太显眼的财产(如私人财产),它们将是有效的。关键是属性不能比它返回的对象更可见,在本例中,列表
仅与T
一样可见。
public class Koers
{
//Class code here
}
public class Inventaris
{
//Class code here
}