【发布时间】:2016-03-01 09:58:12
【问题描述】:
我收到此错误,但我不知道为什么。
'非静态字段、方法或需要对象引用 属性'
为什么我需要在这里有一个对象引用?我的代码如下:
public string GetChanges()
{
string changelog = "";
MySqlConnection connection = new MySqlConnection("server=127.0.0.1;uid=root;pwd=pass;database=data");
try
{
connection.Open();
MySqlCommand cmd = new MySqlCommand("SELECT `change_log` FROM version WHERE ID = '1'", connection);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
changelog = reader.GetString(0);
}
}
connection.Close();
}
catch
{
//MessageBox.Show(e.Message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
return changelog;
}
我这样调用上面的函数:
string changelog = GetChanges();
为什么在这种情况下需要对象引用?我不能使用静态,因为我正在创建一个不适用于静态方法的 Web 服务。如何更改它以使用对象?
谢谢
【问题讨论】:
-
你从哪里打电话给
getChanges()? -
您的
GetChanges方法默认情况下是一个实例方法。如果没有所属的类型名称,您无法调用它。将其设为static或使用string changelog = MyType.GetChanges();之类的类型调用它 -
你在哪里调用
GetChanges方法?在我看来,您应该将方法的逻辑与 Web 服务接口分开,并从代码中调用逻辑而不是服务。直接调用 Web 服务方法有异味 - 您基本上是在试图捏造接口。 -
我发布的代码实际上还没有在我的 Web 服务中。我最初是通过在 winforms 项目的 Program.cs 中使用该方法来测试它,并从那里调用它。但是现在我将该方法放在我的 Web 服务中,并从 winforms 项目中调用它,对象似乎没有问题。出于好奇 Luaan,为什么直接调用 web 方法会有异味?我在 web 方法中有上述函数,并从另一个项目中调用它,如下所示:MyService.GetChanges();创建 WebService 对象后。我是这样直接调用的吗?
标签: c#