Нестатическая ошибка, не могу найти причину - PullRequest
0 голосов
/ 07 февраля 2012

Я получаю сообщение об ошибке «Требуется ссылка на объект для нестатического поля, метода или свойства Skirmer_Final.Nyhed.FK_Nyhed_ID.get». И я не могу понять, что не так.

Мой код

public class Nyhed
{
    public int FK_Status_ID { get; set; }
    public int FK_Nyhed_ID { get; set; }

    public static List<Nyhed> GetByStatus(int ID, SqlConnection connection)
    {
        List<Nyhed> result = new List<Nyhed>();

        using (var command = new SqlCommand("Select FK_Nyhed_ID from Status_Kan_Se_Nyhed where FK_Status_ID=@id"))
        {
            command.Connection = connection;

            command.Parameters.AddWithValue("id", ID);

            SqlDataReader reader = command.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    Nyhed StatusKanSeNyhed = new Nyhed();
                    StatusKanSeNyhed.FK_Status_ID = ID;
                    StatusKanSeNyhed.FK_Nyhed_ID = reader.GetInt32(0);
                    result.Add(StatusKanSeNyhed);
                }
            }
            finally
            {
                reader.Close();
            }
            foreach (Nyhed N in result)
            {
                N.status = Status.GetByID(FK_Status_ID, connection);
                N.nyhed = Nyhed.GetByID(FK_Nyhed_ID, connection);
            }
        }
        return result;
    }
}

Вы видите ошибку?

Ответы [ 4 ]

3 голосов
/ 07 февраля 2012

FK_Nyhed_ID является собственностью. Таким образом, вы должны ссылаться на него через объект. Я предполагаю, что проблема здесь:

foreach (Nyhed N in result) {
    N.status = Status.GetByID(FK_Status_ID, connection);
    N.nyhed = Nyhed.GetByID(FK_Nyhed_ID, connection);
}

Вы ранее ссылались на FK_Nyhed_ID в экземпляре StatusKanSeNyhed, поэтому я предполагаю, что вы захотите сослаться на N.FK_Nyhed_ID ниже

foreach (Nyhed N in result) {
    N.status = Status.GetByID(FK_Status_ID, connection);
    N.nyhed = Nyhed.GetByID(N.FK_Nyhed_ID, connection);  //<----- added object reference
}
2 голосов
/ 07 февраля 2012

Я думаю, вы хотели написать

        foreach (Nyhed N in result)
        {
            N.status = Status.GetByID(N.FK_Status_ID, connection);
            N.nyhed = Nyhed.GetByID(N.FK_Nyhed_ID, connection);
        }

и добавьте недостающие N.

0 голосов
/ 07 февраля 2012

Проблема здесь:

foreach (Nyhed N in result)
        {
            N.status = Status.GetByID(FK_Status_ID, connection);
            N.nyhed = Nyhed.GetByID(FK_Nyhed_ID, connection);
        }

Вы пытаетесь прочитать открытый член FK_Status_ID, который доступен только через экземпляр объекта.

0 голосов
/ 07 февраля 2012

FK_Status_ID является свойством экземпляра, поэтому к нему нельзя получить доступ из статического метода.Вы можете сделать его статическим или изменить метод на метод экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...