2012-02-07 144 views
0

我收到了“非静态字段,方法或属性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 [email protected]")) 
     { 
      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; 
    } 
} 

你能看到错误?

回答

3

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_IDStatusKanSeNyhed实例,所以我猜你会想下面

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 
} 
0

FK_Status_ID引用N.FK_Nyhed_ID是实例属性所以它不能从静态方法访问。 您可以将其设置为静态或将您的方法更改为实例方法。

2

我猜你想写

 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

我是怎么错过的。感觉像现在一样傻 – 2012-02-07 16:56:46

0

的问题是在这里:

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

您正在尝试读取公共成员FK_Status_ID,whitch是只能通过对象的一个​​实例访问。

相关问题