Мой мозг не работает этим утром. Я нуждаюсь в некоторой помощи, получающей доступ к некоторым участникам от статического метода. Вот пример кода, как я могу изменить это так, чтобы TestMethod () имел доступ к testInt
public class TestPage
{
protected int testInt { get; set; }
protected void BuildSomething
{
// Can access here
}
[ScriptMethod, WebMethod]
public static void TestMethod()
{
// I am accessing this method from a PageMethod call on the clientside
// No access here
}
}
testInt
объявлено как поле экземпляра. Для метода static
невозможно получить доступ к полю экземпляра, не имея ссылки на экземпляр определяющего класса. Таким образом, либо объявить testInt
статическим, либо изменить TestMethod
на принятие экземпляра TestPage
. Таким образом,
protected static int testInt { get; set; }
нормально, как и
public static void TestMethod(TestPage testPage) {
Console.WriteLine(testPage.testInt);
}
Что из них правильно, во многом зависит от того, что вы пытаетесь смоделировать. Если testInt
представляет состояние экземпляра TestPage
, то используйте последний. Если testInt
относится к типу TestPage
, то используйте первое.
Два варианта, в зависимости от того, что именно вы пытаетесь сделать:
testInt
статическим. TestMethod
так, чтобы в качестве аргумента использовался экземпляр TestPage
. Если ваша твин не все, что серьезно, вы можете буквально сделать совершенно новый набор кадров в обратном порядке и просто воспроизвести его из этого ключевого кадра.
Это бедный человек обратный твин.
-121--2793640-protected static int testInt { get; set; }
Но будьте осторожны с проблемами для резьбы.
Помните, что static
означает, что член или метод принадлежит классу, а не экземпляру класса. Таким образом, если вы находитесь внутри статического метода и хотите получить доступ к нестатическому члену, то у вас должен быть экземпляр класса, на котором можно получить доступ к этим членам (если только члены не должны принадлежать к какому-то одному конкретному экземпляру класса, в этом случае вы можете просто сделать их статическими).