2016-07-26 6 views
0

Я пытаюсь использовать экземпляр объекта ниже, чтобы вызвать метод close(). Это дает ошибку: «.. Может кто-нибудь предложить, что я делаю неправильноВызов объекта метода другим способом

public class Trial 
{ 
    public static void Initialize() 
    { 
     IWebDriver Instance = null; 
     Instance = new FirefoxDriver(); 
     Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
     Instance.Navigate().GoToUrl("www.google.com"); 
    } 
    public static void Close() 
    { 
     Instance.Close(); 
    } 


} 

ответ

3

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

https://msdn.microsoft.com/en-us/library/ms973875.aspx

Вы изначально объявили Instance внутри метода Initialize(). Это означает, что это можно увидеть только в пределах области этого метода. Если вы хотите обратиться к нему в другом месте, вы должны объявить его в пределах того места, где вы хотите получить доступ к нему. Один из способов сделать это в вашем примере кода - переместить объявление Instance в класс Trial. После этого методы Initialize() и Close() находятся в пределах его (class), поэтому оба они имеют доступ к переменной.

public class Trial 
{ 
    static IWebDriver Instance = null; 

    public static void Initialize() 
    { 
     Instance = new FirefoxDriver(); 
     Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
     Instance.Navigate().GoToUrl("www.google.com"); 
    } 
    public static void Close() 
    { 
     Instance.Close(); 
    } 
} 
1

Instance является„Название «Instance» не существует в текущем контексте местный“для Initialize() и поэтому не может быть замечен Close() - вы можете захотеть взглянуть на то, чтобы Instance являющегося член Trial класса, так что все методы могут видеть