Недвижимость недоступна, хотя объявлена ​​публичной - PullRequest
1 голос
/ 04 мая 2011

Вот моя проблема в 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.Я попытался сделать это неавтоматическим способом.(то есть я написал приватную переменную бэкера и выписал 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.

Еще раз спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Глядя на ваш пример, он должен работать - можете ли вы проверить, что Entity указывает на определенный вами класс, а не на какой-то встроенный класс? (щелкните правой кнопкой мыши Entity в Visual Studio, перейдите к определению).

2 голосов
/ 04 мая 2011

Хотя я не тестировал его, я сильно подозреваю, что если я скопирую и вставлю ваш код в Visual Studio, он не выдаст ошибку, которую вы цитировали. (Даже ваша отредактированная версия.)

Пожалуйста, опубликуйте пример, который на самом деле выдает ошибку . Обрежьте свой проект до костей и опубликуйте только те кусочки, которые имеют отношение к проблеме. По всей вероятности, вы сами найдете ошибку в процессе:)

...