0

我的原始代码:

public partial class LineInstance
{
   EventWaitHandle _stopHandle;
   Private int _linenumber;
   // many variable;
   public LineInstance(int linenumber, EventWaitHandle stopper)
   {
      _stopHandle = stopper;
  _linenumber = linenumber;
      // blah
   }    

   private string Menu()
   {
      dynamic api = new Http("http://80.56.16.214/MyServices/MyData.svc");
  var reply = api.GetId(Id: "888");
  var response1 = reply.Response;
  // blah blah
}
 }

现在我想做这些

dynamic api = new Http("http://80.56.16.214/MyServices/MyData.svc");
var reply = api.GetId(Id: "888");
var response1 = reply.Response;

是全局的,因为我想在这个类的其他方法中使用。我尝试将它们移动到类构造函数之前的区域

更新:

public partial class LineInstance
{
EventWaitHandle _stopHandle;
private int _linenumber;
dynamic api = new Http("http://80.56.16.214/MyServices/MyData.svc");
var reply = api.GetId(Id: "888");
var response1 = reply.Response;
          // blah blah

但我得到一个错误:

错误:“非静态字段、方法或属性需要对象引用

如何修改我的代码以使其成为全球性的?

4

2 回答 2

1

定义您的对象,就static好像您希望能够在没有任何特定类实例的情况下使用它

public partial class LineInstance
{
private static dynamic api;
EventWaitHandle _stopHandle;
private int _linenumber;
    // many variable;
public LineInstance(int linenumber, EventWaitHandle stopper)
{
_stopHandle = stopper;
_linenumber = linenumber;
    // blah
 }  

您应该提供一个public property来访问该对象

public static dynamic Api{
 get{ return api; }

}

除此之外,没有global变量C#,你应该以任何方式避免它们!

于 2013-04-11T17:19:18.733 回答
0

要从类的其他方法处理这些属性,您不必将它们设为静态。您更新的代码几乎是正确的。这是您需要做的:

public partial class LineInstance
{
   EventWaitHandle _stopHandle;
   Private int _linenumber;
   dynamic api;
   dynamic reply;
   dynamic response1;

   // many variable;
   public LineInstance(int linenumber, EventWaitHandle stopper)
   {
      _stopHandle = stopper;
  _linenumber = linenumber;
      // blah
   }    

   private string Menu()
   {
  api = new Http("http://80.56.16.214/MyServices/MyData.svc");
  reply = api.GetId(Id: "888");
  response1 = reply.Response;
  // blah blah
  }
 }

如您所见,我唯一更改的是在构造函数中初始化字段,而不是在类主体中初始化——这样就没有错误。

于 2013-04-11T17:41:57.307 回答