属性即使声明为公共也不可访问

本文关键字:访问 声明 属性 | 更新日期: 2023-09-27 17:54:59

这是我在C#的问题:

我有以下类:

public class Entity {
    public int Number { get; set; }
// Other methods, constructor etc, not relevant to this question.
}
public class Manager {
    private Foo() {
        Entity entity = new Entity();
        entity.Number = 1;
    }
}

entity.Number = 1行,我得到以下编译时错误:

 'Entity' does not contain a definition for 'Number' and no extension method 'Number accepting a first argument of type 'Entity' could be found (are you missing a directive or an assembly reference?)

如何解决此错误?看起来我绝对可以访问Number属性。我也试过用非自动属性的方式。(也就是说,我写了一个私有的backer变量,自己写了get和set)。

编辑

一些有用的海报告诉我,我没有提供足够的信息。
我很抱歉,这是我第一次在StackOverflow或类似的网站上发帖。有关相关代码的更完整图片,请参阅下文。

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using SharedContent;
namespace Glow
{
    public class GlowGame : Microsoft.Xna.Framework.Game
    {
        // Viewport and graphics variables
        GraphicsDeviceManager graphics;
        public GlowGame()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            Entity entity = new Entity(Content);
            // Error occurs in line below!
            entity.Number = 1;
        }
        
        // Standard game template methods here:  Initialize, LoadContent, Update,
        // Draw, etc.
    }
}
in a separate file named Entity.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace SharedContent
{
    public class Entity
    {
        public int Number { get; set; }
        public Entity(ContentManager content) { }
    }
}

确切的错误信息:

'SharedContent.Entity' does not contain a definition for 'Number' and no extension method 'Number' accepting a first argument of type 'SharedContent.Entity' could be found (are you missing a using directive or an assembly reference?)

另一个注意事项,我已经检查并重新检查了Entity实际上指向正确的代码,而不是其他一些Entity

再次感谢您的帮助!

属性即使声明为公共也不可访问

查看您的示例应该工作-您可以验证Entity指向您定义的类,而不是一些内置类吗?(在Visual Studio中右键单击Entity,进入定义)。

虽然我还没有测试过,但我强烈怀疑,如果我将您的代码复制并粘贴到Visual Studio中,它将不会产生您引用的错误。(即使是你编辑过的版本)

请张贴一个实际产生错误的例子。将你的项目精简到最基本的部分,只发布与问题相关的部分。很可能,您会自己在过程中发现错误:)