繁体   English   中英

公共变量无法访问

[英]public variable not accessible

在一个名称空间(Ventosa.Graphics)中,我有一个名为Model的公共类

namespace Ventosa.Graphics
{
   public class Model : GraphicsResource
   {
       public Model(...)
       {
           ...
       }
       ...
   }
}

然后在另一个项目中我尝试访问这个类

Model player = new Model(...);

但是这一行会产生错误。 C#认识到Model存在,但声称由于它的保护级别而无法访问它。 不应该公开它意味着它可以从任何地方访问?

是的,基类GraphicsResource是公共的。

这也发生在我项目的其他几个地方,都是派生的类。

编辑:确切的错误信息是(德语): Der Zugriff auf“Ventosa.Graphics.Model”ist aufgrund der Sicherheitsebenenichtmöglich。 翻译成英文,它说: “Ventosa.Graphics.Model”由于其保护级别而无法访问。

你描述了一些显然不应该的东西。 我建议您尝试以最简单的方式重现问题。 你可能无法做到。 然后添加到您的示例中,使其越来越像您的生产代码,直到您触发问题。

删除对超类GraphicResource的引用。 确保只定义了一个构造函数。 尝试使用完整的命名空间引用( using语句)和单个显式构造函数从同一名称空间实例化该类。 它可能会奏效。

如果它不起作用,请退一步并完全定义一个新类型( Ventosa.Graphics.ModelTest或其他东西)。 确保工程。

现在,重新添加部分。从GraphicResource继承,试试。 删除命名空间限定条件; 使用using来代替。 将实例化移动到不同的命名空间,然后移动到不同的程序集。

您已经验证了GraphicResource类的定义是公共的。 它的任何超类都怎么样?

我知道这可能听起来很傻,但是尝试重新启动Visual Studio(清理并重建解决方案后)? 我注意到一些奇怪的行为,特别是如果你启用了Code-Coverage并且安装了一些用于Visual Studio的Powertools。

在以前的一些版本中,Model是内部的吗 这是一个非常普遍的名字。

编辑:确保您确实拥有正确类型的方法,您可以在第二个项目中悬停“模型”声明并按F12(或右键单击并选择“转到定义”,现在不知道德语术语)。 这应该带你到你的类或其他一些“模型”类的定义(也显示.NET内部类型)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM