我收到了“非静态字段,方法或属性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;
}
}
你能看到错误吗?
答案 0 :(得分: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_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
}
答案 1 :(得分: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.
答案 2 :(得分:0)
FK_Status_ID
是一个实例属性,因此无法从静态方法访问它。
您可以将其设置为静态,也可以将方法更改为实例方法。
答案 3 :(得分: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,只能通过对象的实例访问该公共成员。