即使宣布公开,也无法获得财产

时间:2011-05-04 18:35:16

标签: c# oop properties encapsulation

以下是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并自己设置)。

修改

一些有用的海报告诉我,我没有提供足够的信息 我很抱歉,这是我第一次在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

再次感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

请发布实际产生错误的示例。将项目修剪到骨骼并仅发布与问题相关的位。很可能,您将自己在过程中发现错误:)